Многоуровневая система прерывания. Аппаратное и программное обеспечение.
В многоуровневых системах прерываний подпрограмма обслуживания прерывания более низкого уровня может быть прервана подпрограммой обслуживания прерывания более высокого уровня. Иными словами, реализуется режим прерывания во время прерывания.
Структура таблицы векторов прерываний:
Обращение к элементам таблицы осуществляется по 8-разрядному коду - типу прерывания
Однако несколько контроллеров прерываний могут быть включены последовательно. На современных компьютерах (начиная с 286) один (ведущий) контроллер прерываний подключен непосредственно к процессору, а второй (ведомый) своим выходом INT подключен ко входу IRQ2 ведущего контроллера. Итого получается 15 входов прерываний от IRQ0 до IRQ 15 (IRQ2 не может быть использован).
При подаче сигнала на прерывание от контроллера к процессору по линии INTR-INT, одновременно по линиям данных из контроллера прерываний в процессор поступает номер вектора прерывания, который образуется путем сложения IRQ с некоторым базовым номером, который присваивается ВIOSом контроллеру в процессе загрузки (значения по умолчанию 08h для ведущего контроллера и 70h для ведомого). Таким образом, например, номер вектора прерывания для клавиатуры будет 08+1=9h, для жесткого диска 70h+6=76h.
Контроллер прерываний допускает перепрограммирование для установки различных режимов формирования очереди запросов, изменения приоритетов прерываний, изменения базовых номеров контроллеров. Такое перепрограммирование осуществляется через два байтовых порта 20h и 21h. По умолчанию IRQ отдельного контроллера имеют приоритеты в соответствии с их номерами (IRQ0 – наивысший, IRQ7 – наинизший).
Пример каскадного включения двух контроллеров прямого доступа к памяти
Дата добавления: 2016-06-13; просмотров: 1627;