Почему linux отключает вытеснение ядра после того, как код ядра содержит спин-блокировку?

Я новичок в Linux и читаю книгу драйверов для Linux от Rubini & Корбет. Я запутался в одном утверждении, связанном сspinlocks; в книге говорится

Если бы непревзойденная однопроцессорная система когда-либо вращалась на замке, она вращалась бы вечно; никакой другой поток не сможет получить процессор, чтобы снять блокировку. По этой причине операции спин-блокировки в однопроцессорных системах без включенного вытеснения оптимизированы, чтобы ничего не делать, за исключением тех, которые изменяют статус маскирования IRQ.

Далее в книге говорится

Случай вытеснения ядра обрабатывается самим кодом спин-блокировки. Каждый раз, когда код ядра удерживает спин-блокировку, вытеснение отключается на соответствующем процессоре. Даже однопроцессорные системы должны отключать вытеснение таким образом, чтобы избежать состояния гонки.

Вопрос: Если в однопроцессорной системе приоритетное отключение ядра отключается всякий раз, когда код ядра (выполняющийся от имени пользовательского процесса) удерживает спин-блокировку, то как может другой процесс получить возможность запуска и, следовательно, попытаться получить спин-блокировку? Почему ядро Linux отключает вытеснение ядра всякий раз, когда код ядра содержит спин-блокировку?

Ответы на вопрос(1)

Ваш ответ на вопрос