IRQ

Материал из Old-Games.RU Wiki
Перейти к: навигация, поиск

IRQ — Interrupt Request, то есть запрос на прерывание процессора. Если данный IRQ не замаскирован, то контроллер прерываний генерирует прерывание INT как сигнал процессору. При этом процессор прекращает вычисления, останавливая выполнение программы, и переходит в процедуру обработки прерывания. Процедура обработки прерывания обязана сохранить контекст процессора (иначе станет невозможно восстановить работу прерванной программы), после чего выполнить свой код и вернуть управление прерванной программе.

Связь между 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

Внимание, это применительно только к DOS и Win9x и только к старым компьютерам.

Зачастую старые звуковые карты и прочие устройства (особенно не PnP) вызывают конфликты прерываний — Например, если два устройства настроены использовать IRQ 7, то сначала в таблицу прерываний в вектор 15 заносится адрес драйвера первого устройства, а затем при загрузке драйвера второго устройства этот адрес перезаписывается. Однако драйвер может быть умнее и не перезаписать вектор, а сохранить его, и если драйвер не распознает, что за сообщение пришло от устройства, то он вызывает другой драйвер по сохранёному адресу.

См. также

Драйвер