Часть 5(1)

Тема 2.2 Обработка прерываний 

Понятие прерывания. Классы прерываний.

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

Прерывание – реакция на входной сигнал запроса прерывания или команду прерывания.

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

Прерывания бывают:

-      внешние;

-      внутренние;

-      программные.

            Внешние (аппаратные) – прерывания могут возникать в результате действий пользователя или в результате поступления сигналов от аппаратных устройств (например, сигналов завершения ввода-вывода от принтера или винчестера). Такие прерывания возникают между выполнением двух команд программы.

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

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

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

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

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

Система прерываний позволяет значительно эффективнее использовать процессор при наличии нескольких протекающих параллельно во времени процессов.

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

Порядок обработки прерывания

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

·         запоминание состояния прерываемой программы;

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

·         восстановление состояния прерванной программы;

·         возврат к прерванной программе.

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

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

Классы (уровни) прерываний

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

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

Вектор прерывания

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

Таблица векторов прерываний

Вектор 1

Начальный адрес подпрограммы обработки вектора 1

Вектор n

Начальный адрес подпрограммы обработки вектора n

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

Организация вложенных прерываний

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

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

В системе установлены приоритетные соотношения между запросами прерываний.

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

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

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

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

Схема с абсолютными приоритетами:

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

Схема с относительными приоритетами:

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

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