Контекстные процессы ядра ядра в Linux - PullRequest
4 голосов
/ 28 января 2012

Рассмотрим процесс кевентд.Он тратит все свое время жизни в режиме ядра.Теперь, насколько мне известно, Linux проверяет, требуется ли переключение контекста, в то время как процесс переключается из режима ядра в режим пользователя, и, насколько я знаю, keventd никогда не переключится из режима ядра в режим пользователя.будет ли ядро ​​Linux знать, когда его выключать?

1 Ответ

4 голосов
/ 28 января 2012

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

while (1);

Очевидно, что это не происходит в обычных настольных операционных системах.Причина в том, что preemption , когда после того, как процесс запускается для своего временного интервала, ядро ​​получает сигнал тревоги, входит и принудительно переключает контексты по мере необходимости.Процессы ядра тоже.Однако я не уверен, что именно это и делает keventd - более вероятно, что он добровольно откажется от своего временного интервала на регулярной основе (см. sched_yield, вызов пользовательского пространства для того же эффекта), тем более что ядро ​​можно настроитьбыть не преимущественным.Это прерогатива процесса ядра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...