Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_PU.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.17 Mб
Скачать

14. Назначение номеров прерываний, адаптеров, их параметры – чувствительность по уровню, чувствительность по перепаду.

Каждому устройству, для поддержки работы которого требуются прерывания, должен быть назначен свой номер прерывания. Назначения номеров прерываний выполняются с двух сторон: во-первых, адаптер, нуждающийся в прерываниях должен быть сконфигурирован на использование конкретной линии шины (джамперами или программно). Во-вторых, программное обеспечение, поддерживающее данный адаптер, должно быть проинформировано о номере используемого векто­ра.

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

* Чувствительность к уровню (level sensitive) означает, что контроллер преры­ваний вырабатывает запрос прерывания процессора по факту обнаружения определенного уровня (на ISA — высокого) на входе DRQx. Если к моменту за­вершения обработки этого запроса (после записи команды EOI в регистр кон­троллера прерываний) контроллер снова обнаруживает активный уровень на том же входе DRQx, то он снова сформирует запрос на прерывание процессора.

* Чувствительность к перепаду (edge sensitive) означает, что контроллер преры­ваний вырабатывает запрос прерывания процессора только по факту обнару­жения перепада (на ISA — положительного) на входе DRQx. Повторно запрос по этому входу возможен только по следующему такому же перепаду, то есть сигнал предварительно должен вернуться в исходное состояние.

15. Совместное использование прерываний: линии запросов прерываний, обработчик прерываний (программный, аппаратный).

Линии запросов прерываний в компьютере, насыщенном дополнительными адап­терами, являются самым дефицитным ресурсом, поэтому возникает желание ис­пользовать эти линии совместно, то есть применять разделяемые прерывания меж­ду несколькими устройствами. Обработчики прерываний (программы) от разных устройств, разделяющих одну линию запроса (и следова­тельно, общий вектор прерывания), должны быть выстроены в цепочку. В процес­се обработки прерывания очередной обработчик в цепочке чтением известного ему регистра своего устройства должен определить, не это ли устройство вызвало пре­рывание. Если это так, то обработчик должен выполнить необходимые действия и сбросить сигнал запроса прерывания от своего устройства, после чего передать управление следующему обработчику в цепочке; в противном случае он просто передает управление следующему обработчику.

Разделяемые прерывания для разнотипных устройств в общем случае работо­способными считать нельзя. Во-первых, у каждого устройства факт прерывания программно обнаруживается по-своему, и этот способ знает только драйвер этого устройства. Так что программно для совместного использования прерываний их обработчики должны уметь выстраиваться в цепочки, что на практике выполня­ется не всегда корректно. Во-вторых, возможны потери прерываний от устройств, требующих быстрой реакции. Это может происходить, если обработчик такого устройства окажется в конце цепочки, а предшествующие ему обработчики окажут­ся «нерасторопными» (не самым быстрым способом обнаружат, что прерывание - не их). Поведение системы в такой ситуации может меняться в зависимости от порядка загрузки драйверов. Для нескольких однотипных устройств (сетевых адаптеров на одном и том же кристалле), пользующихся одним драйве­ром, разделяемые прерывания работают вполне успешно.