IRQ
IRQ — Interrupt Request, то есть запрос на прерывание процессора. Если данный IRQ не замаскирован, то контроллер прерываний генерирует прерывание INT как сигнал процессору. При этом процессор прекращает вычисления, останавливая выполнение программы, и переходит в процедуру обработки прерывания. Процедура обработки прерывания обязана сохранить контекст процессора (иначе станет невозможно восстановить работу прерванной программы), после чего выполнить свой код и вернуть управление прерванной программе.
IRQ | Описание | INT |
0 | Системный таймер | 8 |
1 | Клавиатура | 9 |
2 | Используется самим контроллером прерываний | 10 |
3 | Или последовательные порты COM 2 и COM 4, или доступен для других устройств. | 11 |
4 | Или последовательные порты COM 1 и COM 3, или доступен для других устройств. | 12 |
5 | Параллельный порт LPT2 или Звуковая карта. | 13 |
6 | Контроллер накопителя на гибких магнитных дисках. | 14 |
7 | Параллельный порт LPT1 или Звуковая карта. | 15 |
8 | Часы реального времени (часть SMOS) | 74 |
9 | Хост адаптер SCSI или доступен для других устройств. Прерывания IRQ2 от других устройств превращаются в IRQ9. | 113 |
10 | Свободное сквозное (разделяемое) прерывание. | 114 |
11 | Свободное сквозное (разделяемое) прерывание. | 115 |
12 | Прерывание мыши PS/2 (COM мыши вызывают 3 или 4 прерывание) | 116 |
13 | Сопроцессор | 117 |
14 | Первый ATA канал. | 118 |
15 | Второй ATA канал. | 119 |
Зачастую старые звуковые карты и прочие устройства (особенно не PnP) вызывают конфликты прерываний — Например, если два устройства настроены использовать IRQ 7, то сначала в таблицу прерываний в вектор 15 заносится адрес драйвера первого устройства, а затем при загрузке драйвера второго устройства этот адрес перезаписывается. Однако драйвер может быть умнее и не перезаписать вектор, а сохранить его, и если драйвер не распознает, что за сообщение пришло от устройства, то он вызывает другой драйвер по сохранёному адресу.