Прерывание и спин-блокировка

Я понимаю что мы отключаем interrupts при приобретении spinlocks в обработчиках прерываний.

У меня есть сомнения относительно того, что происходит, когда spinlock проводится в process context и в этот момент происходит прерывание?

Может ли этот сценарий произойти?

Насколько я понимаю, если так получится, что обработчик тоже пытается получить то же самое lock удерживается в контексте процесса, он будет продолжать вращаться для этой блокировки.

Так всегда ли мы отключаем прерывания при получении spinlock?

1 ответ

Решение

Спиннинг - это то, для чего нужны спиновые замки.

Когда прерывание происходит на другом процессоре, оно будет вращаться только до тех пор, пока не будет разблокирована блокировка контекста процесса.

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

(Отключение прерываний при получении спин-блокировки в контексте прерываний обычно не является необходимым, поскольку обработчик прерываний не может быть прерван сам по себе.)

Другие вопросы по тегам