Аппаратные прерывания (IRQ)
Аппаратные прерывания (IRQ) используют различные устройства для сообщения процессору о необходимости принять и обработать определенный запрос.
Каналы прерываний представляют собой контакты в разъемах и соответствующие проводники на материнской плате. После получения IRQ-запроса система запускает специальную процедуру его обработки, первым этапом которой является занесение в стек содержимого регистров процессора. Далее делается запрос к таблице векторов прерываний, которая содержит перечень адресов памяти с соотношением номерам прерываний. В зависимости от номера полученного IRQ запускается приложение, которое относится к данному каналу.
Указатели, сохраненные в таблице векторов, служат для определения адресов памяти, по которым записаны приложения-драйверы для обслуживания платы, отправившей запрос, такая же работа и в проигрывателях Chord. Например, для контролера жесткого диска вектор прерываний указывает на код BIOS, предназначенный для обслуживания контролера.
После завершения необходимых инструкций по обслуживанию платы или устройства, отправившего запрос на прерывание, процедура обработки IRQ восстанавливает значение регистров процессора (путем извлечения из стека) и передает управление системой тому приложению, которое работало до возникновения прерывания.
При помощи прерываний компьютер способен своевременно реагировать на возникновение внешних событий. Аппаратные прерывания имеют систему приоритетов: чем больше номер прерывания, тем ниже приоритет. Прерывания, имеющие больший приоритет, обладают преимуществом и могут откладывать обработку других прерываний.
По шине ISA запросы IRQ отправляются в виде перепадов логических уровней, причем каждый из них использует отдельную линию, подведенную ко всем разъемам. За каждым проводником закреплен свой номер прерывания. Материнская плата не способна определить, в какой разъем вставлена пославшая прерывание плата, поэтому есть вероятность возникновения конфликтных ситуаций в том случае, если две платы используют один канал. Чтобы избежать таких конфликтов, система выставляет настройки таким образом, чтобы каждый адаптер (устройство) использовал свой канал прерывания.