Прерывания и особые ситуации: Приоритеты прерываний

Печать
Программирование - Архитектура и система команд микропроцессоров x86

 

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

 

Таблица 3.6. Приоритеты прерываний и особых ситуаций



Приоритет

Описание

1 (высший)

Ошибки проверки машины (#MC).

2

Ловушка по переключению задач (флаг T в TSS) (#DB).

3

Внешние аппаратные воздействия по выводам: FLASH#, STOPCLK#, SMI#, INIT#.

4

Ловушки в предыдущей команде: точки останова (#BP), ловушки отладки (трассировка, точки останова по данным и в/в) (#DB).

5

Внешние прерывания: NMI, маскируемые прерывания.

6

Ошибки при вызове следующей команды:
точка останова для кода (#DB),
выход за границу сегмента (#GP),
страничная ошибка по коду (#PF).

7

Ошибки при декодировании следующей команды:
неопределенный код операции (#UD),
длина кода команды превышает 15 байт (#UD);
сопроцессор недоступен (#NM).

8

Ошибки при выполнении команды:
ошибка сопроцессора (#MF);
переполнение (#OF);
нарушение границ (#BR);
неправильный TSS (#TS);
сегмент не присутствует (#NP);
стековая ошибка (#SS);
общая защита (#GP);
страничная ошибка по данным (#PF);
контроль выравнивания (#AC).

 

Вопрос приоритета обработки прерваний является одним из "темных пятен" процессоров Intel и других производителей. Дело в том, что разные модели процессоров могут вести себя по разному, в т.ч. и совсем не так, как это описано в документации. Иногда конкурирующие прерывания могут влиять друг на друга приводя процессор в непредсказуемое состояние, а иногда они могут просто теряться не оставляя никаких следов.