Принципы организации системы прерывания

 

 
 

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

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

Моменты возникновения запросов прерывания заранее неизвестны и поэтому не могут быть учтены при программировании. Запросы на прерывание могут возникать как в самой машине, так и в ее внешней среде.

Внутренние запросы – сбой в работе аппаратуры, переполнение разрядной сетки, деление на 0, нарушение защиты памяти, различные ситуации при выполнении операции ввода/вывода.

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

Для реализации прерывания программ в состав ЭВМ вводят специальные аппаратные и программные средства. Совокупность аппаратных и программных средств, необходимых для реализации прерываний, называется системой прерывания программ.

Основными функциями системы прерывания программ являются:

1.Запоминание состояния прерываемой программы и осуществление перехода к прерывающей программе.

2.Восстановление состояния прерванной программы и возврат к ней.

 

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

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

 
 

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

 

 

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

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

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

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

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

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

1. начальный адрес прерывающей программы(начальный адрес программы обработки прерывания от данного источника)

2.слово состояния процессора(ССП)

 

Начальный адрес прерывающей программы     ССП

 

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