117
Самый простой и экономичный способ — программный последовательный оп-
рос всех потенциальных источников запроса на прерывание —
полинг. После по-
лучения обобщенного запроса на прерывание и, например, КП процессор с по-
мощью обычных команд типа «Загрузить» последовательно проверяет содержи-
мое соответствующих триггеров-регистров этих источников. По обнаружении
единичного значения сигнала запроса процедура полинга, естественно, заверша-
ется. Этот способ, к сожалению, имеет большое время реакции
τ
р
.
Аппаратное преобразование КП в начальный адрес обработчика прерывания
может сводиться к непосредственному использованию КП в качестве, например,
младших разрядов этого адреса. Можно здесь использовать и промежуточное ПЗУ
с начальными адресами (косвенный способ). Так называемые векторные прерыва-
ния (современный вариант) по КП (КТП) адресуют некоторую системную область
оперативной памяти, где находятся
заранее приготовленные ВП (векторы преры-
ваний), в составе которых есть и искомый начальный адрес обработчика.
В старых ЭВМ использовался аппаратно-программный способ, когда по КП осу-
ществлялся вызов общей для некоторого класса прерываний прерывающей про-
граммы, внутри которой осуществляется ветвление внутри этого класса.
В фазе 2С (учет приоритетов и, возможно, масок
) реализуется одна из четырех
дисциплин обслуживания (ДО) прерываний:
—
БП (бесприоритетная ДО);
—
ОП (относительные приоритеты);
—
АП (абсолютные приоритеты);
—
СП (смешанные приоритеты).
Дисциплина БП соответствует алгоритму FIFO (first input —
first output, «Пер-
вый пришел —
первый ушел»). Здесь организуется очередь запросов на прерыва-
ние, или «Простой буфер».
Относительные приоритеты (ОП) не допускают вложения прерываний — об-
служивание ведется «до конца».
Напротив, абсолютные приоритеты (АП) предполагают при появлении более
приоритетного запроса новые (вложенные) прерывания.
Смешанные приоритеты реализуются в соответствии с так называемой при-
оритетной матрицей (рис. 2.41).
Приоритетная матрица
анализируется на предмет возможного наличия в ней
тупиковых ситуаций. В примере (рис. 2.41) запросы в соответствии
с их относительными приоритетами («больше-меньше») выстраиваются в цик-
лическую цепочку: 1<2<3<1< … .
Это и есть тупиковая ситуация. При наличии всех трех запросов будет проис-
ходить только ПОП (с заданием каждый раз нового начального адреса обработ-
чика),
а ФОП не начнется никогда. Очевидно, такая матрица должна быть забра-
кована.