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