Могут ли аппаратные прерывания выгрузить процесс, удерживающий спин-блокировку (выгрузка отключена)?
Есть похожий вопрос, заданный кем-то:
Как ядро обрабатывает блокировку в контексте процесса при возникновении прерывания?
Но все еще неясно, когда прерывание приходит на одном процессоре, а процесс выполняется на том же процессоре с удерживаемой спин-блокировкой. может прервать процесс, удерживающий спин-блокировку.? Должно быть потому, что у нас есть spin_lock_irq, чтобы отключить прерывания.
это означает, что, когда выгрузка ядра отключена и прерывание приходит, тогда прерывание может выгрузить процесс и начать выполнение правильно?
Может кто-нибудь уточнить это. Я думаю, что здесь не хватает точки.
Спасибо гурурадж
0 ответов
Да, прерывания вытеснят ваш код удержания блокировки.
Аппаратное обеспечение ЦП, которое обрабатывает прерывание и переходит к вектору прерывания в IDT, не знает и не заботится о том, какой код выполняется или какие у вас блокировки. Он вытеснит все, даже другие обработчики прерываний.