Я думаю, что сообщение объясняет ваши вопросы:
что такое вытеснение?
Способность операционной системы выгрузить или остановить текущую запланированную задачу в пользу задачи с более высоким приоритетом. Планирование может быть одним из, но не ограничиваясь, планирования процесса или ввода-вывода и т. Д.
что такое ядро выгрузки?
В Linux программы пользовательского пространства всегда были приоритетными: ядро прерывает программы пользовательского пространства для переключения на другие потоки, используя обычную тактовую метку. Таким образом, ядро не ожидает, пока программы пользовательского пространства явно освободят процессор (что имеет место в случае совместной многозадачности). Это означает, что бесконечный цикл в программе пользовательского пространства не может блокировать систему.
Однако, до ядер 2.6 само ядро не было преждевременным: как только один поток вошел в ядро, он не мог быть прерван для выполнения другого потока. Процессор можно использовать для выполнения другого потока, когда системный вызов был прерван или когда текущий поток явно попросил планировщик запустить другой поток с помощью функции schedule (). Это означает, что бесконечный цикл в коде ядра заблокировал всю систему, но на самом деле это не проблема: код ядра спроектирован так, чтобы не было бесконечных циклов.
Прерывание ядра было введено в ядрах 2.6, и его можно включить или отключить с помощью опции CONFIG_PREEMPT. Если CONFIG_PREEMPT включен, то код ядра может быть прерван везде, кроме случаев, когда код отключил локальные прерывания. Бесконечный цикл в коде больше не может блокировать всю систему. Если CONFIG_PREEMPT отключен, то поведение 2.4 восстанавливается.
Плюсы и минусы?
Плюсы: ядро вытеснения может улучшить задержку и масштабируемость, а также может запускать задачи высокого приоритета и своевременно реагировать.
Минусы: Это затрудняет написание кода в приоритетном ядре, особенно в SMP, и вы должны учитывать множество факторов.