Зарезервированные прерывания защищённого режима

Каскадное включение контроллеров прерываний

На современных системных платах функции контроллеров прерываний возлагаются на чипсет, который может иметь и более гибкие возможности управления, чем пара контроллеров 8259A.

Контроллер прерываний имеет схему приоритетов так как в один момент времени может прийти более одного запроса:

· В основном режиме - режиме полного вложения, - до тех пор, пока установлен разряд в регистре ISR, соответствующий запрашиваемому прерыванию, все последующие запросы с таким же или более низким приоритетом игнорируются, подтверждаются лишь запросы с более высоким приоритетом.

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

Взаимодействие контроллера прерываний с внешним устройством осуществляется по следующей схеме. Пусть в некоторый момент времени контроллер клавиатуры с помощью единичного сигнала по линии IRQ 1 известил контроллер прерываний о своей готовности к обмену. В ответ на запрос контроллер прерываний генерирует сигнал INTR (запрос на прерывание) и посылает его на соответствующий вход процессора. Процессор, если маскируемые прерывания разрешены (т.е. установлен флаг прерываний IF в регистре флагов процессора), посылает на контроллер шины сигналы R# - чтение, C# - управление и IO# - ввод/вывод, определяющие тип цикла шины. Контроллер шины, в свою очередь, генерирует два сигнала подтверждения прерывания INTA# и направляет их на контроллер прерываний. По второму импульсу контроллер прерываний выставляет на шину данных восьмибитный номер вектора прерывания, соответствующий данной линии IRQ.

Процедура обработки аппаратного прерывания должна завершаться командой конца прерывания EOI (End of Interruption), посылаемой контроллеру прерываний. Для этого необходимо записать байт 20h в порт 20h (для первого контроллера) и в порт A0h (для второго).



Источники аппаратных прерываний в IBM PC AT
Запрос Источник P вектор1 вектор2
NMI Ошибка памяти или другая неисправимая ошибка в системе   02h  
IRQ0 Системный таймер 08h 50h
IRQ1 Клавиатура 09h 51h
IRQ8 Часы реального времени 70h 58h
IRQ9 Устройство на системной шине 71h 59h
IRQ10 Устройство на системной шине 72h 5Ah
IRQ11 Устройство на системной шине 73h 5Bh
IRQ12 Устройство на системной шине 74h 5Ch
IRQ13 Ошибка сопроцессора 75h 5Dh
IRQ14 IDE контроллер 76h 5Eh
IRQ15 Устройство на системной шине 77h 5Fh
IRQ3 Последовательный порт (COM2 или COM4) 0Bh 52h
IRQ4 Последовательный порт (COM1 или COM3) 0Ch 53h
IRQ5 Параллельный порт (LPT2) или IDE контроллер (вторичный) 0Dh 54h
IRQ6 Контроллер дисковода 0Eh 55h
IRQ7 Параллельный порт (LPT1) 0Fh 56h

Зарезервированные прерывания защищённого режима.

00h Ошибка при выполнении команды деления.
01h Прерывание для пошаговой работы, используется отладчиками.
02h Немаскируемое прерывание.
03h Прерывание по точке останова для отладчиков.
04h Переполнение, генерируется командой INTO, если установлен флаг переполнения OF.
05h Генерируется при выполнении машинной команды BOUND, если проверяемое значение вышло за пределы заданного диапазона.
06h Недействительный код операции, или длина команды больше 10 байт.
07h Отсутствие арифметического сопроцессора.
08h Двойная ошибка, вырабатывается в том случае, если при обработке исключения возникло ещё одно исключение. Если во время обработки этого прерывания возникает третье исключение, процессор переходит в состояние отключения, что приводит к перезапуску процессора.
09h Превышение сегмента арифметическим сопроцессором.
0Ah Недействительный сегмент состояния задачи TSS.
0Bh Отсутствие сегмента. Вырабатывается при попытке использовать для адресации дескриптор, у которого бит присутствия сегмента в памяти P сброшен в 0. Это прерывание используется для реализации механизма виртуальной памяти. В этом случае по прерыванию 0Bh операционная система может выполнить подкачку отсутствующего сегмента в память.
0Ch Исключение при работе со стеком. Может возникать в случае отсутствия сегмента стека в памяти или в случае переполнения (антипереполнения) стека.
0Dh Исключение по защите памяти. Возникает при любых попытках получения доступа к сегментам памяти, если программа обладает недостаточным уровнем привилегий.
0Eh Отказ страницы для процессоров i80386 или i80486, зарезервировано для i80286.
0Fh Зарезервировано.
10h Исключение сопроцессора.
11h - 1Ah Зарезервированы.

Сравнение источников аппаратных прерываний в IBM PC AT и в Intel.

Из таблицы мы можем увидеть источники и запросы прерываний в IBM PC AT.

Зарезервированные прерывания защищённого режима - student2.ru

С помощью диспетчера устройств посмотрим, использует ли системный таймер ресурсы: Зарезервированные прерывания защищённого режима - student2.ru

Так же можем посмотреть через программу EVEREST ресурсы устройств, запрос системного таймера там присутсвует.

Зарезервированные прерывания защищённого режима - student2.ru

А если посмотреть в диспетчере устройств клавиатуру и мышь, то ресурсов там нет.

Зарезервированные прерывания защищённого режима - student2.ru

Зарезервированные прерывания защищённого режима - student2.ru

Наши рекомендации