Обработка прерываний в персональной эвм

      Комментарии к записи Обработка прерываний в персональной эвм отключены

Микропроцессоры типа х86 имеют два входа запросов внешних аппаратных прерываний:

  • NMI — немаскируемое прерывание, используется обычно для запросов прерываний по нарушению питания;
  • INT — маскируемое прерывание, запрос от которого можно программным образом замаскировать путем сброса флага IF в регистре флагов.

Рис. 4. Структура контроллера приоритетных прерываний

Единственный вход запроса маскируемых прерываний микропроцессора не позволяет подключить к нему напрямую сигналы запросов от большого числа различных внешних устройств, которые входят в состав современного компьютера: таймера, клавиатуры, мыши, принтера, сетевой карты и т.д. Для их подключения к одному входу INT микропроцессора используется контроллер приоритетных прерываний (рис. 4). Его функции:

  • восприятие и фиксация запросов прерываний от внешних устройств;
  • определение незамаскированных запросов среди поступивших запросов;
  • проведение арбитража: выделение наиболее приоритетного запроса из незамаскированных запросов в соответствии с установленным механизмом назначения приоритетов;
  • сравнение приоритета выделенного запроса с приоритетом запроса, который в данный момент может обрабатываться в микропроцессоре, формирование сигнала запроса на вход INT микропроцессора в случае, если приоритет нового запроса выше;
  • передача в микропроцессор по шине данных типа прерывания, выбранного в процессе арбитража, для запуска соответствующей программы — обработчика прерывания; это действие выполняется по сигналу разрешения прерывания INTA от микропроцессора, который выдается в случае, если прерывания в регистре флагов микропроцессора не замаскированы (IF=1).

Переход к соответствующему обработчику прерывания осуществляется (в реальном режиме работы микропроцессора) посредством таблицы векторов прерываний. Эта таблица (рис. 5) располагается в самых младших адресах оперативной памяти, имеет объем 1 Кбайт и содержит значения сегментного регистра команд (CS) и указателя команд (IP) для 256 обработчиков прерываний.

Рис. 5. Структура таблицы векторов прерываний

Обращение к элементам таблицы осуществляется по 8-разрядному коду — типу

прерывания (таблица 1)

Таблица 14.1.
Тип прерывания Источник прерывания
Деление на 0
Пошаговый режим выполнения программы
Запрос по входу NMI
· · ·
Запрос по входу IRQ0 (системный таймер)
Запрос по входу IRQ1 (контроллер клавиатуры)
· · ·
Отсутствие сегмента в оперативной памяти
· · ·
Пользовательское прерывание

Различные источники задают тип прерывания по-разному:

  • программные прерывания вводят его изнутри процессора или содержат его в номере команды INT n;
  • аппаратные маскируемые прерывания вводят его от контроллера приоритетных прерываний по шине данных;

немаскируемому аппаратному прерыванию назначен тип 2.

Лекция 11: Прерывания