Планирование процессов: Как ядро ​​обновляет флаг need_resched текущего запущенного процесса? - PullRequest
0 голосов
/ 10 ноября 2019

Давайте рассмотрим, что в среде SMP выполняется процесс P, который в данный момент находится либо в " контексте процесса ", либо в " контексте прерывания ", Теперь после завершения задачи, при возврате обратно в пользовательское пространство (из обработчика прерываний или из системного вызова ) или возвращении обратно в пространство ядра (из прерыванияОбработчик ) проверяет, установлен ли флаг need_resched . Если будет установлено, что установлен флаг, то будет вызван планировщик для выделения заслуживающего процесса для выполнения на текущем процессоре.

Что я не могу понять, так это как / кто устанавливает флаг need_resched ? поскольку этот флаг является локальным для каждого процесса.

И очевидно, что текущий процессор не может обновить флаг need_resched , поскольку он занят выполнением текущего процесса P. В этом случае как выполняется кодна другом процессоре обновите этот флаг в процессе P?

Платформа: Linux на x86

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