Биты служебного регистра контроллера прерываний при возникновении немаскируемого прерывания

#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. Привет! Я знаю это, но это не то, о чем я спрашиваю. Я спрашиваю, затрагиваются ли биты в служебном регистре во время выполнения немаскируемого прерывания.