Прерывания и особые ситуации: Приоритеты прерываний
|
|
Программирование -
Архитектура и система команд микропроцессоров 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 и других производителей. Дело в том, что разные модели процессоров могут вести себя по разному, в т.ч. и совсем не так, как это описано в документации. Иногда конкурирующие прерывания могут влиять друг на друга приводя процессор в непредсказуемое состояние, а иногда они могут просто теряться не оставляя никаких следов.
|