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