Вопрос № 9 Система прерываний ЭВМ 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вопрос № 9 Система прерываний ЭВМ



 

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

Различают следующие типы прерываний:

- внешние (аппаратные)

- внутренние (исключения)

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

Внешние прерывания – происходят асинхронно, т.е. происходят в случайный момент времени в процессе выполнения программы (например, от внешних устройств: других ЭВМ, аварийных и некоторых других датчиков технологического процесса).

Они бывают:

- маскируемые*, которые могут быть замаскированы программными средствами компьютера

- немаскируемые, запрос от которых таким образом замаскирован быть не может.

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

Внешние аппаратные прерывания инициируются контроллерами периферийного оборудования. Источники сигналов прерываний подключаются либо к выводу немаскируемых прерываний процессора (NMI), либо к выводу маскируемых прерываний (INTR). Линия NMI обычно предназначается для прерываний, вызываемых катастрофическими событиями, такими как, ошибки четности памяти или авария питания.

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

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

Программные прерывания – вызываются следующими ситуациями:

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

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

ОРГАНИЗАЦИЯ ПРЕРЫВАНИЙ.

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

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

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

1. определение наиболее приоритетного незамаскированного запроса на прерывание (если одновременно поступило несколько запросов)

2. определение типа выбранного запроса

3. сохранение текущего состояния счетчика команд и регистра флагов

4. определение адреса обработчика прерывания по типу прерывания и передача управления первой команде этого обработчика

5. выполнение программы – обработчика прерывания

6. восстановление сохраненных значений счетчика команд и регистра флагов прерванной программы

7. продолжение выполнения прерванной программы

Этапы 1-4 выполняются аппаратными средствами ЭВМ автоматически при появлении запроса прерывания. Этап 6 также выполняется аппаратно по команде возврата из обработчика прерывания.

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

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

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

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

 

 

Рис. 14.1. Выполнение прерывания в компьютере: tр - время реакции процессора на запрос прерывания; tс - время сохранения состояния прерываемой программы и вызова обработчика прерывания; tв - время восстановления прерванной программ

Механизм прерываний поддерживается аппаратными и программными средствами ОС. Различают векторный (vectored) и опрашиваемый (polled) типы прерываний. В обоих способах процессору передается информация об уровне приоритета.

При векторном типе прерываний в процессор передается также адрес обработчика прерывания. Для векторного типа схема обработки такова: электрический сигнал – запрос на подтверждение – вектор прерывания – обработчик.

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

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

 

Приоритет прерывания (interrupt priority) – характеристика важности, присваиваемая программным прерываниям.

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

- времени его выполнения («короткие» задания имеют более высокий приоритет по сравнению с «длинными» заданиями)

- объема используемой оперативной памяти (задания, требующие большого объема памяти, не должны иметь одинаковый приоритет)

- интенсивности и объема использования других ресурсов ВС

- срочности выполнения и т.д.

 

Понятие приоритета в прерывании программ имеет два смысла.

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

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

 

1. ПРИОРИТЕТ МЕЖДУ ЗАПРОСАМИ ПРЕРЫВАНИЙ

Различают абсолютный и относительный приоритеты:

Абсолютный приоритет – запрос, имеющий абсолютный приоритет, прерывает выполняемую программу и инициирует выполнение соответствующей прерывающей программы.

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

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

В случае простейшей аппаратной реализации приоритета между запросами прерываний может быть использован метод «последовательного поиска» (рис. 1). Суть метода состоит в последовательном изменении содержимого счетчика от 0 до 2n-1 и просмотре всех 2n уровней прерывания до совпадения содержимого счетчика с номером уровня. При одновременном появлении нескольких запросов жестко закрепляется запрос с уровнем с меньшим номером. В этом случае приоритет жестко фиксированным. Изменить приоритетные соотношения можно лишь пересоединением линий сигналов запросов на входах системы прерывания. Метод «последовательного поиска» прост в реализации, но время реакции велико, т.к. в общем случае необходимо прохождение счетчиком всех 2n позиций, что при большом n может выходить за допустимые временные пределы. Особенно это важно при работе в режиме реального времени.

 

 

 

 

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

 

2. ЗАПРОС МЕЖДУ ПРЕРЫВАЮЩИМИ ПРОГРАММАМИ

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

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

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

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

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

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

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

 



Поделиться:


Последнее изменение этой страницы: 2016-06-06; просмотров: 3087; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.111.9 (0.019 с.)