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

Есть похожий вопрос, заданный кем-то:

Как ядро ​​обрабатывает блокировку в контексте процесса при возникновении прерывания?

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

это означает, что, когда выгрузка ядра отключена и прерывание приходит, тогда прерывание может выгрузить процесс и начать выполнение правильно?

Может кто-нибудь уточнить это. Я думаю, что здесь не хватает точки.

Спасибо гурурадж

0 ответов

Да, прерывания вытеснят ваш код удержания блокировки.

Аппаратное обеспечение ЦП, которое обрабатывает прерывание и переходит к вектору прерывания в IDT, не знает и не заботится о том, какой код выполняется или какие у вас блокировки. Он вытеснит все, даже другие обработчики прерываний.

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