Аппаратные прерывания вырабатываются устройствами компьютера, когда возникает необходимость их обслуживания. Например, по прерыванию таймера соответствующий обработчик прерывания увеличивает содержимое ячеек памяти, используемых для хранения времени. В отличие от программных прерываний, вызываемых запланировано самой прикладной программой, аппаратные прерывания всегда происходят асинхронно по отношению к выполняющимся программам. Кроме того, может возникнуть одновременно сразу несколько прерываний!
Для того, чтобы система "не растерялась", решая какое прерывание обслуживать в первую очередь, существует специальная схема приоритетов. Каждому прерыванию назначается свой уникальный приоритет. Если происходит одновременно несколько прерываний, то система отдает предпочтение самому высокоприоритетному, откладывая на время обработку остальных прерываний.
Система приоритетов реализована на двух микросхемах Intel 8259 (для машин класса XT - на одной такой микросхеме). Каждая микросхема обслуживает до восьми приоритетов. Микросхемы можно объединять (каскадировать) для увеличения количества уровней приоритетов в системе.
Уровни приоритетов обозначаются сокращенно IRQ0 - IRQ15 (для машин класса XT существуют только уровни IRQ0 - IRQ7).
Для машин XT приоритеты линейно зависели от номера уровня прерывания. IRQ0 соответствовало самому высокому приоритету, за ним шли IRQ1, IRQ2, IRQ3 и так далее. Уровень IRQ2 в машинах класса XT был зарезервирован для дальнейшего расширения системы. И начиная с машин класса AT IRQ2 стал использоваться для каскадирования контроллеров прерывания 8259. Добавленные приоритетные уровни IRQ8 - IRQ15 в этих машинах располагаются по приоритету между IRQ1 и IRQ3.
Приведем таблицу аппаратных прерываний, расположенных в порядке приоритета:
Номер | Описание |
8 | IRQ0 прерывание интервального таймера, возникает 18,2 раза в секунду. |
9 | IRQ1 прерывание от клавиатуры. Генерируется при нажатии и при отжатии клавиши. Используется для чтения данных с клавиатуры. |
A | IRQ2 используется для каскадирования аппаратных прерываний в машинах класса AT. |
70 | IRQ8 прерывание от часов реального времени. |
71 | IRQ9 прерывание от контроллера EGA. |
72 | IRQ10 зарезервировано. |
73 | IRQ11 зарезервировано. |
74 | IRQ12 зарезервировано. |
75 | IRQ13 прерывание от математического сопроцессора. |
76 | IRQ14 прерывание от контроллера жесткого диска. |
77 | IRQ15 зарезервировано. |
B | IRQ3 прерывание асинхронного порта COM2. |
C | IRQ4 прерывание асинхронного порта COM1. |
D | IRQ5 прерывание от контроллера жесткого диска для XT. |
E | IRQ6 прерывание генерируется контроллером флоппи диска после завершения операции |
F | IRQ7 прерывание принтера. Генерируется принтером, когда он готов к выполнению очередной операции. Многие адаптеры принтера не используют это прерывание. |