Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы по архитектуре.docx
Скачиваний:
84
Добавлен:
17.05.2015
Размер:
1.81 Mб
Скачать

29. Способы обслуживания прерываний

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

Работа с системой прерываний может рассматриваться с двух точек зрения:

  1. Работа с векторами прерываний;

  2. Работа с микросхемами контроллеров прерываний (современные машины могут не иметь отдельной микросхемы контроллера прерываний, но их регистры сохранены в адресном пространстве).

Работа с векторами прерываний.

Адреса подпрограмм обслуживания прерываний находятся в специальной таблице и называются векторами прерывания. В реальном режиме таблица вектров распологается в начале физической памяти. Необходимость работать с таблицей прерываний может возникнуть в следующих случаях:

  1. Как прерывание можно вызывать одну из ваших подпрограмм. Хотя вызов подпрограммы как прерывания требует больше процессорного времени, такой подход оправдан если необходимо нарушить принцип иерархичности программного обеспечения внутри одного модуля или если эта процедура используется многими Вашими программами (ее можно оставить резидентной после завершения программы настройки Вашей системы).

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

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

  4. Наконец, Вы можете захотеть написать прерывание, которое дополнит одну из процедур операционной системы.

Работа с микросхемами контроллеров прерываний

Для управления аппаратными прерываниями во всех типах IBM PC используется микросхема программируемого контроллера прерываний Intel 8259 (или ее аналоги). Поскольку в каждый момент времени может поступить не один запрос, микросхема имеет схему приоритетов. Имеется 8 уровней приоритетов, кроме AT, у которого их 16, и обращения к соответствующим уровням обозначаются сокращениями от IRQ0 до IRQ7 (от IRQ0 до IRQ15). Максимальный приоритет соответствует уровню 0. Добавочные 8 уровней для AT обрабатываются второй микросхемой 8259; этот второй набор уровней имеет приоритет между IRQ2 и IRQ3. Запросы на прерывание 0-7 соответствуют векторам прерываний от 8H до 0FH; для AT запросы на прерывания 8-15 обслуживаются векторами от 70H до 77H.

Вот некоторые из назначений этих прерываний: запрос от таймера, контроллер клавиатуры, часы реального времени в АТ, ошибка математического сопроцессора и т.д.