Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Система прерываний.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆

6.2 Система приоритетов

При наличии нескольких источников запросов прерывания должен быть установлен определенный порядок (дисциплина) в обслуживании поступающих запросов. Другими словами, между запросами (и соответствующими прерывающими программами) должны быть установлены приоритетные соотношения, определяющие, какой из нескольких поступивших запросов подлежит обработке в первую очередь, и устанавливающие, имеет право или не имеет данный запрос (прерывающая программа) прерывать ту или иную программу. Приоритетный выбор запроса для исполнения входит в процедуру перехода к прерывающей программе.

Различают абсолютный и относительный приоритеты.

Абсолютные приоритеты.

Запрос, имеющий абсолютный приоритет, прерывает выполняемую программу и инициирует выполнение соответствующей прерывающей программы.

Рис. 6.2 Иллюстрация абсолютного приоритета

Относительные приоритеты.

Запрос с относительным приоритетом является первым кандидатом на обслуживание после завершения выполнения текущей программы.

Рис. 6.3 Иллюстрация относительных приоритетов

Если наиболее приоритетный из выставленных запросов прерывания не превосходит по уровню приоритета выполняемую процессором программу, то запрос прерывания игнорируется или его обслуживание откладывается до завершения выполнения текущей программы.

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

6.3 Идентификация прерывающего устройства.

Когда в ЭВМ имеется несколько периферийных устройств, работаю­щих в режиме прерываний, сигналы их запросов на обслу­живание объединяются по схеме ИЛИ и подаются на вход INT процессора. Следовательно, при наличии активного сигнала INT= 1 без дополнительных действий и аппаратных средств невозможно определить, какое устройство должен обслуживать процессор, тем более, что запросы на обслу­живание могут формироваться одновременно несколькими устройствами. Другими словами, возникает проблема иден­тификации прерывающего устройства, т. е. однозначного перехода к определенной подпрограмме обслуживания. Разработано несколько способов решения этой проблемы, различающихся скоростью реакции процессора и объемом дополнительных аппаратных средств. При реализации лю­бого способа необходимо назначить устройствам определен­ные приоритеты и учитывать их таким образом, чтобы про­цессор, реагируя на сигнал прерывания, выбирал для обслуживания запрашивающее устройство с максимальным приоритетом.

Программный полинг.

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

На рис. 6.4 приведен типичный вариант программного полинга.

Рис. 6.4 Программный полинг

Первым проверяется флажок готовности устрой­ства У1 с наибольшим приоритетом. Если оно не запраши­вало обслуживания, опрашивается следующее устройство и т. д. Когда встречается первое устройство, готовое к опе­рациям ВВ, управление передается подпрограмме обслуживания этого устройства, которая определяет необходи­мые операции ВВ. По завершении обслуживания в полинге может быть запрограммировано одно из следующих дей­ствий:

  1. Управление возвращается в основную программу без проверки готовности остальных устройств. Здесь гаранти­руется обязательная проверка в каждом цикле полинга устройств с высоким приоритетом, так как обслуживание их блокирует обслуживание устройств с меньшими приори­тетами.

  2. Управление возвращается к программе полинга, т. е. в точку проверки прерывания следующего устройства (на рис. 6.4 показано штриховыми линиями). Этот способ га­рантирует проверку в каждом цикле полинга всех устройств.

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

Удобно реализовать программный полинг с помощью команды условного пропуска. При ее выполнении адресу­ется регистр управления и состояния определенного уст­ройства, проверяется состояние флажка готовности и, если флажок установлен, выполняется следующая по порядку команда перехода к подпрограмме обслуживания адресо­ванного устройства. Если же флажок сброшен, следующая команда пропускается и аналогичным образом проверяется запрос прерывания очередного устройства.

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

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