#x86 #interrupt #isr
#x86 #прерывание #isr
Вопрос:
У меня следующий вопрос (относительно x86
архитектуры):
Что происходит, когда немаскируемое прерывание (например, NMI
) прерывает выполняемое маскируемое прерывание? Остается ли соответствующий флаг ISR (In-Service Register) для упреждающего прерывания установленным в регистре ISR контроллера прерываний при обслуживании маскируемого прерывания или все биты в служебном регистре очищаются?
Заранее спасибо.
Ответ №1:
В оригинальной аппаратной конструкции IBM PC сигнал NMI никоим образом не включал контроллер прерываний, поэтому он не оказывал никакого влияния на служебный регистр. Хотя прошло около 30 лет, я предполагаю, что это все еще так; у современных производителей микросхем более или менее связаны руки из-за такого поведения унаследованного ядра.
Комментарии:
1. Я согласен. NMI является входом для ядра, в то время как служебный регистр является частью APIC. Другими словами, NMI полностью обходит APIC и не должен влиять на состояние регистров APIC.
Ответ №2:
ISR должен быть очищен в обработчике прерываний путем отправки команды EOI (завершение прерывания) контроллеру прерываний.
Комментарии:
1. Привет! Я знаю это, но это не то, о чем я спрашиваю. Я спрашиваю, затрагиваются ли биты в служебном регистре во время выполнения немаскируемого прерывания.