В чем разница между не превентивным, превентивным и выборочным превентивным ядром?

В чем разница между «неуправляемым», «превентивным» и «выборочным превентивным» ядром?

Надеюсь, кто-то может пролить свет на это.

  • Изучение того, как создать собственное ядро ​​Linux
  • Поиск того, какой конкретный процесс Python был убит убийцей Linux OOM
  • как определить, активирована ли isolcpus?
  • Какое «семейство процессоров» выбрать в разделе «Тип и функции процессора»?
  • своп раздел и его законы
  • Повреждение файловой системы Linux из-за неправильного завершения работы (fs ext4)?
  • Установка определенной версии ядра на debian linux
  • не может обновить ядро ​​(grubby fatal error: невозможно найти подходящий шаблон)
  • 2 Solutions collect form web for “В чем разница между не превентивным, превентивным и выборочным превентивным ядром?”

    На упреждающем ядре процесс, работающий в режиме ядра, может быть заменен другим процессом, находящимся в середине функции ядра.

    Это относится только к процессам, работающим в режиме ядра, процессор, выполняющий процессы в пользовательском режиме, считается «незанятым». Если процесс пользовательского режима хочет запросить службу из ядра, он должен выдать исключение, которое может обрабатывать ядро.

    В качестве примера:

    Процесс A выполняет обработчик исключений, процесс B пробуждается запросом IRQ, ядро ​​заменяет процесс A на B (принудительный коммутатор процесса). Процесс A остается незавершенным. Планировщик решает впоследствии, если процесс A получает процессорное время или нет.

    На невосприимчивом ядре процесс A просто использовал бы все процессорное время, пока он не закончит или не решит добровольно разрешить другим процессам прервать его (плановый переход процесса).

    Сегодняшние Linux-операционные системы обычно не включают полностью упреждающее ядро, все еще существуют критические функции, которые должны выполняться без перерыва. Поэтому я думаю, вы могли бы назвать это «селективным упреждающим ядром».

    Кроме того, существуют подходы к тому, чтобы ядро ​​Linux (почти) было полностью упреждающим.

    • Викиреальность
    • Статья LWN

    преимуществом является -> Возможность операционной системы упредить или остановить запланированную задачу в настоящее время в пользу задачи с более высоким приоритетом. Планирование может быть одним из, но не только, планирования процесса или ввода-вывода и т. Д.

    В Linux программы пользовательского пространства всегда были превентивными: ядро ​​прерывает программы пользовательского пространства для переключения на другие потоки, используя обычный такт. Таким образом, ядро ​​не дожидается, когда программы пользовательского пространства будут явно освобождать процессор (что имеет место в совместной многозадачности). Это означает, что бесконечный цикл в программе пользовательского пространства не может блокировать систему.

    Однако до ядер 2.6 ядро ​​не было предопределено: как только один поток ввел ядро, его нельзя было бы вытеснить другим потоком. Однако это отсутствие предпосылки в ядре вызвало несколько проблем в отношении латентности и масштабируемости. Таким образом, предварительное использование ядра было введено в ядрах 2.6, и его можно включить или отключить, используя опцию CONFIG_PREEMPT. Если CONFIG_PREEMPT включен, код ядра можно вытеснить везде, за исключением случаев, когда код отключил локальные прерывания. Бесконечный цикл в коде больше не может блокировать всю систему. Если CONFIG_PREEMPT отключен, то поведение 2.4 будет восстановлено.

    ReQuoted и отформатирован: http://www.linuxquestions.org/questions/linux-general-1/pre-emptive-vs-non-pre-emptive-kernel-582437/

    Linux и Unix - лучшая ОС в мире.