IRQ: различия между версиями

Материал из Old-Games.RU Wiki
Перейти к навигации Перейти к поиску
 
(не показаны 2 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
'''IRQ''' — Interrupt Request, то есть запрос на прерывание процессора. Если данный IRQ не замаскирован, то контроллер прерываний генерирует прерывание [[INT]] как сигнал процессору. При этом процессор прекращает вычисления, останавливая выполнение программы, и переходит в процедуру обработки прерывания. Процедура обработки прерывания обязана сохранить контекст процессора (иначе станет невозможно восстановить работу прерванной программы), после чего выполнить свой код и вернуть управление прерванной программе.
 
'''IRQ''' — Interrupt Request, то есть запрос на прерывание процессора. Если данный IRQ не замаскирован, то контроллер прерываний генерирует прерывание [[INT]] как сигнал процессору. При этом процессор прекращает вычисления, останавливая выполнение программы, и переходит в процедуру обработки прерывания. Процедура обработки прерывания обязана сохранить контекст процессора (иначе станет невозможно восстановить работу прерванной программы), после чего выполнить свой код и вернуть управление прерванной программе.
  
 
+
{| class="wikitable"
{| border="1"
 
 
  |+Связь между IRQ и INT, Функции прерываний.
 
  |+Связь между IRQ и INT, Функции прерываний.
  |-
+
  |-  
 
  |'''IRQ'''
 
  |'''IRQ'''
 
  |'''Описание'''
 
  |'''Описание'''
Строка 77: Строка 76:
  
 
Зачастую старые  звуковые карты и прочие устройства (особенно не [[PnP]]) вызывают конфликты прерываний — Например, если два устройства настроены использовать IRQ 7, то сначала в таблицу прерываний в вектор 15 заносится адрес драйвера первого устройства, а затем при загрузке драйвера второго устройства этот адрес перезаписывается. Однако драйвер может быть умнее и не перезаписать вектор, а сохранить его, и если драйвер не распознает, что за сообщение пришло от устройства, то он вызывает другой драйвер по сохранёному адресу.
 
Зачастую старые  звуковые карты и прочие устройства (особенно не [[PnP]]) вызывают конфликты прерываний — Например, если два устройства настроены использовать IRQ 7, то сначала в таблицу прерываний в вектор 15 заносится адрес драйвера первого устройства, а затем при загрузке драйвера второго устройства этот адрес перезаписывается. Однако драйвер может быть умнее и не перезаписать вектор, а сохранить его, и если драйвер не распознает, что за сообщение пришло от устройства, то он вызывает другой драйвер по сохранёному адресу.
 +
 +
== См. также ==
 +
[[Драйвер]]
 +
 +
[[Категория:Информационные технологии]]

Текущая версия на 20:21, 6 июня 2012

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 заносится адрес драйвера первого устройства, а затем при загрузке драйвера второго устройства этот адрес перезаписывается. Однако драйвер может быть умнее и не перезаписать вектор, а сохранить его, и если драйвер не распознает, что за сообщение пришло от устройства, то он вызывает другой драйвер по сохранёному адресу.

См. также

Драйвер