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

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

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

  • Установка определенной версии ядра на debian linux
  • Обновление ядра 2.6 до 3.5.3 на CentOS 5.8 -> switchroot: mount failed: нет такого файла или каталога
  • Кэш для Linux usb-drive
  • Написание драйвера для обмана * nix систем с наличием GPU
  • Как понять вывод modinfo?
  • Мне интересно, как обеспечивается атомарность writev ()
  • Ошибка установки linux-firmware_1.157.10: «невозможно удалить» /lib/firmware/brcm/brcmfmac43362-sdio.bin ': разрешение отклонено. "
  • Лучший способ приблизиться к ошибкам ядра HID_MAX_USAGES?
  • 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 - лучшая ОС в мире.