IRQ: различия между версиями
Nil (обсуждение | вклад) (Новая страница: «'''IRQ''' — Interrupt Request, то есть запрос на прерывание процессора. Если данный IRQ не замаскирован, …») |
м (added Category:Информационные технологии using HotCat) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
− | '''IRQ''' — Interrupt Request, то есть запрос на прерывание процессора. Если данный IRQ не замаскирован, то контроллер прерываний генерирует прерывание [[INT | + | '''IRQ''' — Interrupt Request, то есть запрос на прерывание процессора. Если данный IRQ не замаскирован, то контроллер прерываний генерирует прерывание [[INT]] как сигнал процессору. При этом процессор прекращает вычисления, останавливая выполнение программы, и переходит в процедуру обработки прерывания. Процедура обработки прерывания обязана сохранить контекст процессора (иначе станет невозможно восстановить работу прерванной программы), после чего выполнить свой код и вернуть управление прерванной программе. |
− | + | {| class="wikitable" | |
− | {| | ||
|+Связь между IRQ и INT, Функции прерываний. | |+Связь между IRQ и INT, Функции прерываний. | ||
− | |- | + | |- |
|'''IRQ''' | |'''IRQ''' | ||
|'''Описание''' | |'''Описание''' | ||
Строка 74: | Строка 73: | ||
|} | |} | ||
− | Зачастую старые звуковые карты и прочие устройства (особенно не [[PnP]]) вызывают конфликты прерываний — Например, если два устройства настроены использовать IRQ 7, то сначала в таблицу прерываний в вектор 15 заносится адрес драйвера первого устройства, а затем при загрузке драйвера второго устройства этот адрес перезаписывается. Однако драйвер может быть умнее и не перезаписать вектор, а сохранить его, и если драйвер не распознает, что за сообщение пришло | + | Внимание, это применительно только к DOS и Win9x и только к старым компьютерам. |
+ | |||
+ | Зачастую старые звуковые карты и прочие устройства (особенно не [[PnP]]) вызывают конфликты прерываний — Например, если два устройства настроены использовать IRQ 7, то сначала в таблицу прерываний в вектор 15 заносится адрес драйвера первого устройства, а затем при загрузке драйвера второго устройства этот адрес перезаписывается. Однако драйвер может быть умнее и не перезаписать вектор, а сохранить его, и если драйвер не распознает, что за сообщение пришло от устройства, то он вызывает другой драйвер по сохранёному адресу. | ||
+ | |||
+ | == См. также == | ||
+ | [[Драйвер]] | ||
+ | |||
+ | [[Категория:Информационные технологии]] |
Текущая версия на 20:21, 6 июня 2012
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 |
Внимание, это применительно только к DOS и Win9x и только к старым компьютерам.
Зачастую старые звуковые карты и прочие устройства (особенно не PnP) вызывают конфликты прерываний — Например, если два устройства настроены использовать IRQ 7, то сначала в таблицу прерываний в вектор 15 заносится адрес драйвера первого устройства, а затем при загрузке драйвера второго устройства этот адрес перезаписывается. Однако драйвер может быть умнее и не перезаписать вектор, а сохранить его, и если драйвер не распознает, что за сообщение пришло от устройства, то он вызывает другой драйвер по сохранёному адресу.