Порядок проверки условий обслуживания прерываний

Способы указания номера вектора прерывания

Вектор прерывания

 

Вход в процедуру, обслуживающую аппаратное прерывание или исключение, определяется с помощью вектора прерывания, являющегося ___________ ________ _______________.

Вектора группируются в структуру – таблицу прерываний* (IDT, Interrupt Descriptor Table).

Каждому номеру (0-255) прерывания или исключения соответствует свой вектор.

Вектора 0-31 в таблице прерываний Intel резервирует под _______________.

 

Таблица прерываний в реальном режиме

 

Содержит ___________ _________ (двойные слова) обслуживающих процедур.

После сброса располагается, начиная с нулевых адресов.

Команда LIDT дает возможность:

____________ ______________ таблицы в пределах первого мегабайта;

____________ _________ в пределах от 007Fh до 03FFh.

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

 

Таблица прерываний в защищенном режиме

 

Содержит 8-байтные _________________ прерываний.

Размер: _______ элементов (дескрипторов).

Может располагаться в любом месте физической памяти.

 

 

Зависят от вида прерывания:

– маскируемых аппаратных прерываний – вводится от внешнего контроллера прерываний во втором ________ ________ или поступает по ______ ______;

– программных прерываний – задается командой;

– немаскируемого прерывания – имеет фиксированный вектор (2);

– _______________ – автоматически генерируется внутри процессора.

 

 

1.Ловушка ___________ (#DB) по выполненной инструкции (пошаговый режим через флаг TF или точка останова по данным через регистры отладки).

2.Отказ ___________ (#DB) по очередной инструкции (точка останова по инструкции через регистр отладки).

3.Немаскируемое аппаратное прерывание.

4.Маскируемое аппаратное прерывание (при IF=1).

5.Отказ _________________ (#NP или #GP) при выборке очередной инструкции.

6.Отказ ____________ (#PF) при выборке очередной инструкции.

7.Отказ ____________________ очередной инструкции (#UD или #GP).

8.Для операции ______ исключение #NM (если TS=1 и МР=1).

9.Для инструкции _____ исключение #NM (если ЕМ=1 или TS=1).

10.Для операции WAIT или инструкции FPU исключение #MF от FPU.

11.Отказ _________________ (#NP, #SS, #GP) или отказ страницы (#PF) для операндов, используемых в инструкции.

 

Двойной отказ

Double Fault (#DF).

Возникает, если:

– при обработке исключения, связанного с __________________ (#TS, #NP, #SS или #GP), процессор обнаруживает исключение, отличное от _________ ____________ (#PF);

– при обработке исключения отказа страницы #PF обнаруживается исключение другого типа.

 

Аварийный останов

Shutdown.

Происходит, если во время обслуживания исключения отказа страницы произойдет _____ ______ ________ страницы.

Никакие новые инструкции не выполняются.

Из этого состояния процессор можно вывести только аппаратно:

– сигналом _____, оставляя его в защищенном режиме;

– сигналом ________, переводящим процессор в реальный режим.

 

При обработке исключений 8-14, 17 и 18 в защищенном режиме процессор сохраняет в стеке ________ ______ _________ (Error Code). Если оно отлично от нуля, то в его битах [15:3] содержится селектор дескриптора, с которым связана ошибка, или описание ___________ _________ (для исключения 14 #PF).

 


Таблица прерываний микропроцессоров x86

 

Номер Функция Мне-моника Тип
00h Переполнение при делении на 0 #DE __
01h Исключение отладки #DB _____
02h Немаскируемое прерывание (NMI) - I
03h Исключение отладки (INT 3) #ВР __
04h Исключение по переполнению (INTO) #OF __
05h Прерывание по контролю диапазона (BOUND) #BR __
06h Недопустимый код операции #UD __
07h Сопроцессор недоступен или переключалась задача #NM __
08h Двойной отказ 1) #DF ___ ______
09h Нарушение границы сегмента сопроцессором (386/387)   __, EC
0Ah Недопустимый сегмент состояния задачи 2) #TS __, EC
0Bh Сегмент отсутствует 2) #NP __, EC
0Ch Нарушение границы сегмента стека или сегмент стека отсутствует 3) #SS __, EC
0Dh Общее нарушение защиты 4) #GP __, EC
0Eh Отказ страницы 2) #PF ___ ___
0Fh Зарезервировано - -
10h Исключение сопроцессора #MF __
11h Контроль выравнивания (486+) 2) #AC ___ ______
12h Машинный контроль (Р5+) 2) #MC __, EC
13h Исключение блока ХММ (Рentium III+) #XF __
14h-1fh Зарезервировано - -
00h-FFh Аппаратные (маскируемые) и программные прерывания INT n - __

 

Набор и обработка исключений реального и защищенного режимов различны. В реальном режиме:

1) вектор прерывания не попадает в таблицу;

2) не возникают; возможны в режиме V86;

3) нарушение границы сегмента стека;

4) нарушение границы сегмента данных или кода.

 

Таблица прерываний IBM PC

 

Часть из 32 зарезервированных Intel исключений перекрывается системными прерываниями BIOS и DOS.

 

Номер Функция
05h Печать копии экрана. Генерируется при нажатии клавиши PrtScr
08h IRQ0 – от интервального таймера, возникает 18,2 раза в секунду
09h IRQ1 – от клавиатуры
0Ah IRQ2 – каскадирование контроллеров прерываний
0Bh IRQ3 – от асинхронного порта COM2
0Сh IRQ4 – от асинхронного порта СОМ1
0Dh IRQ5 – от контроллера HDD (в ХТ) или зарезервировано (PC/АТ)
0Eh IRQ6 – от контроллера FDD после завершения операции чтения/записи
0Fh IRQ7 – от принтера (готовность к выполнению очередной операции)
10h Обслуживание видеоадаптера
11h Определение конфигурации устройств в системе
12h Определение размера оперативной памяти в системе
13h Обслуживание дисковой системы
14h Последовательный ввод/вывод
15h Расширенный сервис для компьютеров АТ
16h Обслуживание клавиатуры
17h Обслуживание принтера
1Ah Обслуживание часов
1Bh Обработчик прерываний Ctrl-Break
1Ch Вызывается программно обработчиком прерываний таймера (18,2 раза в секунду)
70h IRQ8 – от часов реального времени
71h IRQ9 – от контроллера EGA
72h IRQ10 – зарезервировано
73h IRQ11 – зарезервировано
74h IRQ12 – зарезервировано
75h IRQ13 – от математического сопроцессора
76h IRQ14 – от контроллера HDD
77h IRQ15 – зарезервировано