Программирование модемов


Особенности обработки аппаратных прерываний



Особенности обработки аппаратных прерываний

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

Для того чтобы система "не растерялась", решая, какое прерывание обслуживать в первую очередь, существует специальная схема приоритетов. Каждому прерыванию назначается свой уникальный приоритет. Если происходит одновременно несколько прерываний, то система отдает предпочтение самому высокоприоритетному, откладывая на время обработку остальных прерываний.

Система приоритетов реализована на двух микросхемах Intel 8259 (для машин класса XT - на одной такой микросхеме). Каждая микросхема обслуживает до восьми приоритетов. Микросхемы можно объединять (каскадировать) для увеличения количества уровней приоритетов в системе.

Уровни приоритетов обозначаются сокращенно IRQ0 - IRQ15 (для машин класса XT существуют только уровни IRQ0 - IRQ7).

Для машин XT приоритеты линейно зависели от номера уровня прерывания. IRQ0 соответствовало самому высокому приоритету, за ним шли IRQ1, IRQ2, IRQ3 и так далее. Уровень IRQ2 в машинах класса XT был зарезервирован для дальнейшего расширения системы. И начиная с машин класса AT IRQ2 стал использоваться для каскадирования контроллеров прерывания 8259. Добавленные приоритетные уровни IRQ8 - IRQ15 в этих машинах располагаются по приоритету между IRQ1 и IRQ3.

Приведем таблицу аппаратных прерываний, расположенных в порядке приоритета:

НомерОписание
8IRQ0 - прерывание интервального таймера, возникает 18,2 раза в секунду.
9IRQ1 - прерывание от клавиатуры. Генерируется при нажатии и при отжатии клавиши. Используется для чтения данных с клавиатуры.
AIRQ2 - используется для каскадирования аппаратных прерываний в машинах класса AT.
70IRQ8 - прерывание от часов реального времени.
71IRQ9 - прерывание от контроллера EGA.
72IRQ10 - зарезервировано.
73IRQ11 - зарезервировано.
74IRQ12 - зарезервировано.
75IRQ13 - прерывание от математического сопроцессора.
76IRQ14 - прерывание от контроллера жесткого диска.
77IRQ15 - зарезервировано.
BIRQ3 - прерывание асинхронного порта COM2.
CIRQ4 - прерывание асинхронного порта COM1.
DIRQ5 - прерывание от контроллера жесткого диска для XT.
EIRQ6 - прерывание генерируется контроллером флоппи-диска после завершения операции.
FIRQ7 - прерывание принтера. Генерируется принтером, когда он готов к выполнению очередной операции. Многие адаптеры принтера не используют это прерывание.
<


Начало  Назад  Вперед