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

Скачать доклад: Принципы организации систем обработки прерывания программ

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

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

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

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

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

Внутренние запросы на прерывание возникают при сбоях в аппаратуре ЭВМ, переполнении разрядной сетки, попытке деления на 0, нарушении защиты памяти, при затребовании или завершении операции ввода-вывода периферийным устройством.

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

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

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

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

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

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

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

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

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

Прерывающая программа, как правило, состоит из трех частей:

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

2) основной, выполняющей затребованную запросом работу;

3) завершающей, обеспечивающей продолжение работы прерванной программы.

Характеристики системы прерывания:

1) Общее количество типов запросов прерываний (число входов в систему прерывания).

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

3) Затраты времени на переключение программ, которые равны суммарному расходу времени на запоминание и восстановление состояния программы.

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

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

Насыщение системы прерываний

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

Допустимые моменты прерывания программ

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

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

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

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

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

	 Запросы от источников прерываний
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
V V V V V V V V V V V V V V V V V V V V V V V V V
--T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-T-¬
¦0¦0¦1¦0¦0¦.¦.¦.¦.¦.¦0¦0¦0¦0¦0¦.¦.¦.¦.¦.¦0¦0¦0¦1¦0¦ РгЗП
LT+T+T+T+T+-+-+-+-+-+T+T+T+T+T+-+-+-+-+-+T+T+T+T+T-
¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
-+-+-+-+-+¬ -+-+-+-+-+¬ -+-+-+-+-+¬
¦1 ¦ ¦1 ¦ ¦1 ¦
L----T----- L----T----- L----T-----
¦ ¦ ¦ЗПКk ----¬
¦ ¦ЗПКi +---------+1 ¦ ОСП
¦ЗПК1 +-------------------+---------+ +-----
+-------------------+-------------------+---------+ ¦
V V V L----
---------------------------------------------------¬
¦ Схема распознавания класса прерывания ¦
L---------------------------------------------------

Запросы от всех источников прерывания поступают на регистр запросов прерывания РгЗП, устанавливая соответствующие его разряды в состояние 1, указывающее на наличие запроса прерывания от определенного источника. Запросы классов прерывания ЗПК1-ЗПКk формируются элементами ИЛИ, объединяющими разряды РгЗП, относящиеся к соответствующим классам. Еще одна схема ИЛИ формирует общий сигнал прерывания ОСП, поступающий в устройство управления процессора.

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

Приоритетное обслуживание запросов прерывания

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

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

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

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

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

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

Процедура прерывания с опросом источников прерывания

В системе с фиксированными приоритетами каждому источнику запросов соответствует отдельный разряд в регистре запросов прерывания.

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

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

Циклический опрос источников прерываний

   --------------¬
¦ Счетчик ¦<---------------------------------¬
¦ ¦<---------------¬ ¦
L-T------T--T-- Сброс ¦ ¦ Код номера
n¦ ... 2¦ 1¦ ¦ ¦ запроса
¦ ¦ +------------------+-----------------+---------->
¦ +--+------------------+-----------------+---------->
+------+--+------------------+-----------------+---------->
--+------+--+-¬ ¦ ¦
¦ Дешифратор ¦ ¦ ¦
L-T------T--T-- ¦ От ГТИ ---¬ ¦
k¦ ... 2¦ 1¦ ---¬ ¦ ---------+& +--
1 ¦ ¦ L--+& +--¬ ¦ --+ ¦
---+------+-----+ ¦ ¦ ¦ ¦ L---
¦ ¦ L--- ¦ ----¬ ¦ ¦
¦ ¦ ---¬ L--+1 ¦ ¦ ¦ Общий сигнал
2 ¦ L-----+& +-----+ ¦ ¦ --T---¬ ¦ прерывания
---+------------+ ¦ . ¦ +--+--+S¦ T +-+------------------>
¦ L--- . ¦ ¦ ¦ ¦ ¦ ¦ ¦
¦ . ---+ ¦ +--+R¦ +--
¦ . ¦ L---- ¦ L-+----
¦ ---¬ ¦ ¦ Сброс счетчика
k L------------+& +--- L------------------------------
----------------+ ¦
Запросы L---
прерывания

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

Цепочечная однотактная схема определения приоритетного запроса

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

Рассмотрим цепочечную однотактную схему определения приоритетного запроса.

	 ЗП1            ЗП2            ЗП3
¦ ¦ ¦
Приоритет ¦ ---¬ ¦ ---¬ ¦ ---¬
---------T+--------+& +-T+--------+& +-T+--------+& +--> ...
¦¦ --  ¦ ¦¦ --  ¦ ¦¦ --  ¦
¦¦ ---¬ ¦ L--- ¦¦ ---¬ ¦ L--- ¦¦ ---¬ ¦ L---
¦L-+& +-+ ¦L-+& +-+ ¦L-+& +-+
L--+ ¦ ¦ L--+ ¦ ¦ L--+ ¦ ¦ ---¬
L--- ¦ L--- ¦ L--- +--+1 ¦ ОСП ---¬
¦ +--------------+--+ +-----+& +->
+--------------+--------------+--+ ¦ ---+ ¦
¦ ¦ ¦ L--- ¦ L---
------+--------------+--------------+-----¬ ¦
¦ Шифратор номера приоритетного запроса ¦ ¦
L--------------------T--------------------- ¦
¦ -------------¬ ¦
Порог прерывания ¦======>¦ Компаратор +---
================================+======>¦ ¦ Разрешение
¦ L------------- прерывания
V
Код запроса

Процесс определения приоритетного запроса инициируется сигналом "Приоритет", поступающим на цепочку последовательно включенных схем И. При отсутствии запросов этот сигнал пройдет через цепочку и сигнал общего запроса прерывания не сформируется. Если среди выставленных запросов прерывания наибольший приоритет имеет i-й запрос, то распространение сигнала "Приоритет" правее схемы И с номером i блокируется. На i-м выходе цепочечной схемы будет сигнал 1, а на всех остальных - 0. При этом в процессор поступает общий сигнал прерывания, а шифратор формирует код i-го запроса.

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

ВЕКТОРНОЕ ПРЕРЫВАНИЕ

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

Более гибким и динамичным является векторное прерывание, при котором исключается опрос источников прерывания.

Прерывание называется векторным, если источник прерывания, выставляя запрос, посылает в процессор код адреса в памяти своего вектора прерывания.

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

ПРОГРАММНОЕ УПРАВЛЕНИЕ ПРИОРИТЕТОМ

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

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

Метод порога прерывания

Этот метод позволяет в ходе вычислительного процесса программным путем изменять уровень приоритета процессора относительно приоритетов источников прерываний.

Порог прерывания - это минимальный уровень приоритета запросов, которым разрешается прерывать программу, выполняемую процессором.

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

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

Метод маски прерывания

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

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

Состояние 1 в данном разряде регистра маски разрешает, а состояние 0 запрещает (маскирует) прерывание текущей программы от соответствующего запроса. Таким образом можно изменять приоритеты запросов без переключения линий, по которым они поступают. Каждая прерывающая программа может устанавливать свою маску.

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