прерывание. Прерывание - это процесс, когда процессор прекращает
нормальное выполнение программы, сохраняет необходимую информацию в
стеке и переходит к какому-то заранее выбранному адресу памяти.
Вызывается прерывание аппаратным сигналом с какого-либо устройства.
Есть еще так называемые программные прерывания, но их мы тут
рассматривать не будем. Прерывания имеют номера, и по каждому из них
переходит переход на свой адрес. После отработки вызванной
процедуры, которая называется обработчиком прерывания, управление
возвращается в исходную точку, и продолжается выполнение
первоначальной программы. Адреса могут выбираться различными
способами. Например, быть фиксированными, или находиться в таблице в
каком-то месте памяти.
Аппаратные прерывания нужны, чтобы при обслуживании процессором
внешних устройств, требующих управления или обмена информацией,
избежать циклов их опроса, на что потребуется много процессорного
времени и программная поддержка этих циклов во всех программах,
работающих на компьютере. При применении IRQ же программа может не
заботиться об этом- обработка устройств происходит в фоне для нее.
Кроме того, это позволяет оперативно реагировать на устройства,
которым нужна быстрая обработка, чтобы не потерять данные. Правда,
тут есть свои недостатки. Например, программа может запретить на
некоторое время аппаратные прерывания. Кроме того, для начала
обработки прерывания должна закончиться предыдущая команда, должны
быть сохранены регистры и т.д., то есть задержка может быть довольно
значительна. Для более оперативного реагирования иногда применяют
механизм DMA (Direct Memory Access). Там процессор не участвует в
пересылке данных, и для этого используется еще одна дополнительная
микросхема, контроллер DMA. Но это уже совсем другой разговор.
IRQ Number
|
Typical Use
|
Description
|
IRQ 0
|
System timer
|
This interrupt is reserved for the internal system timer. It is never
available to peripherals or other devices. |
IRQ 1
|
Keyboard
|
This interrupt is reserved for the keyboard controller. Even on
devices without a keyboard, this interrupt is exclusively for keyboard input. |
IRQ 2
|
Cascade interrupt for IRQs 8-15
|
This interrupt cascades the second interrupt controller to the first.
|
IRQ 3
|
Second serial port (COM2)
|
The interrupt for the second serial port and often the default
interrupt for the fourth serial port (COM4). |
IRQ 4
|
First serial port (COM1)
|
This interrupt is normally used for the first serial port. On devices
that do not use a PS/2 mouse, this interrupt is almost always used by the serial mouse. This is also the default interrupt for the third serial port (COM3). |
IRQ 5
|
Sound card
|
This interrupt is the first choice that most sound cards make when
looking for an IRQ setting. |
IRQ 6
|
Floppy disk controller
|
This interrupt is reserved for the floppy disk controller.
|
IRQ 7
|
First parallel port
|
This interrupt is normally reserved for the use of the printer. If a
printer is not being used, this interrupt can be used for other devices that use parallel ports. |
IRQ 8
|
Real-time clock
|
This interrupt is reserved for the system's real-time clock timer and
can not be used for any other purpose. |
IRQ 9
|
Open interrupt
|
This interrupt is typically left open on devices for the use of
peripherals. |
IRQ 10
|
Open interrupt
|
This interrupt is typically left open on devices for the use of
peripherals. |
IRQ 11
|
Open interrupt
|
This interrupt is typically left open on devices for the use of
peripherals. |
IRQ 12
|
PS/2 mouse
|
This interrupt is reserved for the PS/2 mouse on machines that use
one. If a PS/2 mouse is not used, the interrupt can be used for other peripherals, such as network card. |
IRQ 13
|
Floating point unit/coprocessor
|
This interrupt is reserved for the integrated floating point unit. It
is never available to peripherals or other devices as it is used exclusively for internal signaling. |
IRQ 14
|
Primary IDE channel
|
This interrupt is reserved for use by the primary IDE controller. On
systems that do not use IDE devices, the IRQ can be used for another purpose. |
IRQ 15
|
Secondary IDE channel
|
This interrupt is reserved for use by the secondary IDE controller.
|