.
Начертательная геометрия Геометрическое черчение Инженерная графика Интегралы Математический анализ Матрицы Производные Векторная алгебра

 

4.4. Приоритетное обслуживание прерываний

 

Аппарат приоритетов предназначен для повышения эффективности использования всех ресурсов ВС. Так, неэффективно одновременное выполнение двух заданий, каждое из которых требует большой загрузки устройств ввода-вывода и незначительно использует центральный процессор. Приоритет задания может назначаться исходя из: времени его выполнения ("короткие" задания имеют более высокий приоритет по сравнению с "длинными" заданиями); объема используемой оперативной памяти (задания, требующие большого объема памяти, не должны иметь одинаковый приоритет); интенсивности и объема использования других ресурсов ВС; срочности выполнения и т. д.

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

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

В случае простейшей аппаратной реализации приоритета между запросами прерывания может быть использован метод "последовательного поиска" (рис. 4.4).

Суть метода состоит в последовательном изменении содержимого счетчика от 0 до 2n – 1 и просмотре всех 2n уровней прерывания до совпадения содержимого счетчика с номером уровня.

При одновременном появлении нескольких запросов жестко закрепляется запрос с уровня с меньшим номером. Метод "последовательного поиска" прост в реализации, но время реакции велико, так как в общем случае необходимо прохождение счетчиком всех 2n позиций, что при большом n может выходить за допустимые временные пределы. Особенно это важно при работе в режиме реального времени.


Рис. 4.4. Реализация метода "последовательного поиска"

 

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

Пример. Пусть одновременно возникли три запроса, соответствующие трем уровням прерывания – № 1, № 2, № 3. Пусть по приоритету предпочтение отдается запросу с меньшим номером. Предположим, что приоритет между прерывающими программами, соответствующими указанным уровням, установлен в обратном порядке. Тогда в соответствии с приоритетами между запросами вначале процессор приступает к выполнению программы № 1, но, как только поиск запросов прерывания возобновится, запрос № 2 прервет выполнение программы № 1 и запустит программу № 2. Аналогично последняя прервется программой № 3, которая и выполняется первой.

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

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

Маска прерывания. Маска – шаблонная последовательность знаков, управляющая сохранением или исключением отдельных частей другой последовательности знаков. В простейшем виде маска – это двоичное число, каждый разряд которого соответствует одному из уровней прерывания и разрешает (например, состояние "1") или запрещает (состояние "0") прерывание от запросов, относящихся к данному уровню. Управление приоритетом находится полностью в распоряжении программы. Для каждой прерывающей программы может быть установлена своя маска, указывающая, какие программы способны ее прерывать. Каждый разряд маски соответствует отдельной программе. Маски всех программ хранятся в памяти. Если какая-нибудь программа вызывается для выполнения, то ее маска засылается в регистр маски. Физически маска реализуется обычно в виде триггерного регистра, состояние которого можно изменить программным путем. При формировании маски состояние "1" получают лишь те триггеры, которые соответствуют программам с более высоким, чем у данной программы, приоритетом.

В принципе нули и единицы в маске могут чередоваться в произвольном порядке, однако отсутствие упорядоченности влечет за собой дополнительные трудности:

·    определение приоритета соответствующей программы;

·    обход ситуации "зацикливание приоритетов".

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

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

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

На главную