Программирование на JAVA

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

Информация, необходимая для идентификации устройства, запросившего дан­ное прерывание, имеется в его регистре состояния. Когда устройство генерирует запрос прерывания, оно устанавливает в 1 один из разрядов в регистре состояния, называемый разрядом IRQ. Например, сигналы запросов на прерывания от кла­виатуры и дисплея устанавливают в 1 биты KIRQ DIRQ (см. рис. 7.3). Простей­ший способ определения устройства, запросившего прерывание, заключается в опросе всех присоединенных к шине устройств ввода-вывода. Сначала обслужи­вается устройство, у которого разряд IRQ был установлен первым. Для обработ­ки запроса вызывается соответствующая программа.

Реализовать описанную схему достаточно легко. Ее главным недостатком яв­ляется время, уходящее на проверку IRQ-разрядов тех устройств, которые не за­прашивали прерывание. В качестве альтернативы могут использоваться вектор­ные прерывания, о которых рассказывается в следующем разделе.


<< назад вперед >>