Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

Что такое IRQ и как с ними бороться.

eManual.ru - электронная документация


File: IRQ_FAQ.DOC
WrittenBy: Alexey Kulentsov, 2:5020/449.14@fidonet
Version: 1.03 from 06/02/96 20:50
ThanksTo: Andrew Suvorow, 2:5020/168.101
Igor Sysoev, 2:5020/1.486

Что такое IRQ и как с ними бороться


Q: Что такое IRQ и зачем зто нужно?

A: IRQ расшифровывается как Interrupt Request, или запрос на аппаратное
прерывание. Прерывание - это процесс, когда процессор прекращает
нормальное выполнение программы, сохраняет необходимую информацию в
стеке и переходит к какому-то заранее выбранному адресу памяти.
Вызывается прерывание аппаратным сигналом с какого-либо устройства.
Есть еще так называемые программные прерывания, но их мы тут
рассматривать не будем. Прерывания имеют номера, и по каждому из них
переходит переход на свой адрес. После отработки вызванной
процедуры, которая называется обработчиком прерывания, управление
возвращается в исходную точку, и продолжается выполнение
первоначальной программы. Адреса могут выбираться различными
способами. Например, быть фиксированными, или находиться в таблице в
каком-то месте памяти. Последний случай и имеет место на процессорах
семейства 80x86. Дальше будем рассматривать только это семейство и
IBM-совместимые машины на его основе.

Для поддержки IRQ в схеме компьютера необходима дополнительная
микросхема, так называемый контроллер прерываний. В данном случае
используется 8259 или его аналоги. В современных машинах это просто
часть чипсета.

Аппаратные прерывания нужны, чтобы при обслуживании процессором
внешних устройств, требующих управления или обмена информацией,
избежать циклов их опроса, на что потребуется много процессорного
времени и программная поддержка этих циклов во всех программах,
работающих на компьютере. При применении IRQ же программа может не
заботиться об этом- обработка устройств происходит в фоне для нее.
Кроме того, это позволяет оперативно реагировать на устройства,
которым нужна быстрая обработка, чтобы не потерять данные. Правда,
тут есть свои недостатки. Например, программа может запретить на
некоторое время аппаратные прерывания. Кроме того, для начала
обработки прерывания должна закончиться предыдущая команда, должны
быть сохранены регистры и т.д., то есть задержка может быть довольно
значительна. Для более оперативного реагирования иногда применяют
механизм DMA (Direct Memory Access). Там процессор не участвует в
пересылке данных, и для этого используется еще одна дополнительная
микросхема, контроллер DMA. Но это уже совсем другой разговор.

Q: Что умеет микросхема 8259?

A: 8259 может обслуживать восемь запросов на прерывание от внешних
устройств, соответственно для этого имеется восемь входов, называются
они IRQ0-IRQ7. При поступлении единичного сигнала на один из входов
он запоминается во входном регистре запросов прерывания и дальше
обрабатывается логикой микросхемы. При каскадном соединении
нескольких микросхем возможно обслуживание до 64 линий IRQ. Такое
соединение называется каскадным, так как есть один ведущий контроллер
и до восьми ведомых, подключаемых ко входам IRQ ведущего. Прерывания
имеют уровни приоритетов, приоритеты задаются и меняются программным
путем. Программным путем также можно запрещать или разрешать
отдельные IRQ, а также выдавать сигнал конца прерывания, что
разрешает выдачу запомненных в регистре запросов прерывания сигналов
с более низким приоритетом, полученных во время обработки более
приоритетного запроса.

Q: Как это аппаратно выглядит в IBM-совместимых машинах?

A: Часть IRQ в машине зарезервированы для стандартных устройств на
материнской плате, а часть может использоваться внешними устройствами
и поэтому выведены на стандартный слот ISA. В машинах класса XT один
контроллер и есть 8 прерываний, из них шесть выведены на шину:
IRQ2-IRQ7. В AT к первому контроллеру дополнительно подключен еще
один, и в результате имеется 15 прерываний, так как одно (IRQ2
первого контроллера) используется для каскадирования. На шине
дополнительно появились сигналы IRQ10-IRQ12, IRQ14, IRQ15. В схеме XT
сигналы IRQ на шине в самом простом случае подключены прямо к входам
контроллера и не зашунтированы резисторами. В других конструкциях на
логике ставятся буферные повторители. Соответственно пассивный сигнал
на шине, как и на микросхеме - нулевой, а поступление запроса на
прерывание происходит по единичному фронту.

Q: Для чего конкретно используются IRQ в компьютере?

A: Вот небольшая таблица, в которой указаны стандартные применения IRQ.

Первый контроллер: 8259-1.
Стандартное место для его векторов-с адреса 20h, или с 8-го вектора в
таблице прерываний. Следует заметить, что это неудачное место, так
как начиная с 286 процессора список зарезервированных фирмой Intel
прерываний увеличился, и аппаратные прерывания стали пересекаться с
ними. Поэтому современные многозадачные операционные системы могут
переносить вектора IRQ в другое место.

IRQ Int Применение Дополнительные комментарии и применения
--- --- ---------- --------------------------------------------
0 8h Timer Системный таймер, 18.2 раза в секунду
1 9h Keyboard Генерится при нажатии/отпускании кнопок
2 Ah LPT2/Casc. COMx, Vert.Retrace (EGA, VGA)
3 Bh UART 2 COM2, COM4
4 Ch UART 1 COM1, COM3
5 Dh Fixed disk LPT2(AT), COMx
6 Eh Diskette Генерится FDD-контр. по окончании операции
7 Fh Printer LPT1, SoundBlaster

Второй контроллер: 8259-2.
Появился начиная с AT. Стандартное место для его векторов- 1C0h, или
с 70h вектора.

IRQ Int Применение Дополнительные комментарии и применения
--- --- ----------- --------------------------------------------
8 70h RTC CMOS Real Time Clock
9 71h IRQ2 Emul. Эмуляция IRQ2 для совместимости
10 72h Free SoundBlaster, часто другие устройства
11 73h Free Общепринятого применения не имеет
12 74h Free Общепринятого применения не имеет
13 75h Math Прерывание сопроцессора
14 76h Primary IDE Генерится HDD-контр. по окончании операции
15 77h Second IDE - - - - - -8- - - - - -8

  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2020
    Реклама на сайте