Может ли планировщик или некоторые критические потоки ядра быть вытеснены в вытесняемом ядре Linux?

Может ли планировщик или некоторые критические потоки ядра быть вытеснены в вытесняемом ядре Linux? А как насчет обработчика прерывания (верхняя половина или нижняя половина)?


person WindChaser    schedule 19.01.2015    source источник
comment
Планировщик не является задачей ядра (но он управляет этими приоритетными задачами)   -  person Basile Starynkevitch    schedule 19.01.2015
comment
Так что же такое планировщик? Программа пользовательского пространства, если не задача ядра?   -  person WindChaser    schedule 19.01.2015
comment
Планировщик - важная часть ядра, но не задача ядра.   -  person Basile Starynkevitch    schedule 19.01.2015
comment
Не могли бы вы сказать мне разницу? Спасибо.   -  person WindChaser    schedule 19.01.2015
comment
Вам потребуется несколько часов, чтобы прочитать материал об операционной системе и ядре.   -  person Basile Starynkevitch    schedule 19.01.2015
comment
Я не могу найти концептуальную задачу ядра при поиске нескольких книг по ядру Linux (с использованием сопоставления строк) ...   -  person WindChaser    schedule 19.01.2015


Ответы (2)


Ядро вызывает __schedule () для фактического переключения контекста. Он всегда вызывает это с отключенным приоритетом. Вы можете найти вызывающих абонентов и заметить звонок preempt_disable перед звонком __schedule. Таким образом, это не может быть вытеснено.

Кроме того, обработчик прерывания не может быть вытеснен. Вытеснение здесь отключено. Но ядро ​​Linux является вытесняемым, что означает, что потоки ядра и другой код могут быть вытеснены, если это безопасно.

person bornfree    schedule 11.04.2019

Любой поток ядра или, вообще говоря, любая часть кода может быть вытеснена:

  • Нитью с более высоким приоритетом
  • Пока не в секции, защищенной от прерываний и прерывания

Так что да, даже планировщик может быть вытеснен, например, аппаратным прерыванием.

person MSI    schedule 19.01.2015