Вопрос 5. Системы прерывания
Прерываниемназывается процесс, обуславливающий реакцию компьютера на некоторое событие, требующее немедленного его вмешательства.
Запрос прерывания– есть сигнал процессору о появлении события, требующего немедленной реакции процессора путем перехода на подпрограмму обслуживания этого события.
Системой прерыванияназывается комплекс аппаратных и программных средств,обеспечивающих выявление запросов прерывания и эффективное их обслуживание.
Основными функциями системы прерывания являются следующие.
1. Запоминание состояния процессора, которое определяется состоянием его основных регистров на момент прерывания текущей программы.
2. Осуществление передачи управления на процедуру обслуживания прерывания.
3. Восстановление состояния процессора после окончания выполнения процедуры обслуживания прерывания.
4. Передача управления на продолжение выполнения текущей программы.
Классификация типов прерывания.
Запросы на прерывание могут возникать как внутри самого процессора, так и со стороны внешней среды (периферийных устройств). Поэтому можно выделить сразу же два класса типов прерываний.
1. Внешние прерывания.
2. Внутренние прерывания.
Внешние прерывания относят к так называемым аппаратным прерываниям, поскольку они вызываются аппаратурой, находящейся вне пределов самого компьютера. Внешние прерывания подразделяются на:
а) маскируемые прерывания,
б) немаскируемые прерывания.
Маскируемыми– называются такие прерывания, запросы которых могут быть выключены из зоны внимания процессора, путем наложения маскина возможные запросы прерываний.
Запросы маскируемых прерываний, в отличие от остальных, поступают на систему прерываний процессора через специальное устройство, называемое контроллером прерываний, который в современных процессорах входит в состав микросхемы «южного моста» Chipset, размещаемой на системной плате компьютера.
Немаскируемые прерывания. Запросы немаскируемых прерываний подаются на специально выделенный вход NMI. Они запрещены быть не могут. Источниками запросов таких прерываний являются, например, устройства контроля пропадания напряжения питания или контроля повреждения каких-либо особо важных систем обработки.
Все внешние прерывания асинхронны по отношению к работе процессора, так как они могут появиться в любой момент времени. И, поскольку начало передачи управления на подпрограмму обработки прерывания происходит только после окончания исполнения команды, то время реакции, т.е. запаздывания начала обслуживания по отношению к появлению запроса прерывания, может быть, при выполнении, например, команд умножения или деления, достаточно велико.
Внутренние прерывания.
Внутренние прерывания образуются внутри компьютера по запросам его отдельных функциональных узлов, или как следствие выполнения некоторых специальных команд INTN. Внутренние прерывания замаскированы быть не могут. Код типа прерываний такого рода формируется автоматически при поступлении соответствующего запроса внутреннего прерывания.
Внутренние прерывания бывают двух типов:
а) особые случаи или исключения;
б) программные прерывания.
Особые случаи или исключения –это прерывания, которые возникают при аномальной ситуации, сложившейся при выполнении конкретной команды и препятствующей нормальному продолжению программы.
Под программными прерываниямипонимаются прерывания, инициируемые самой выполняемой программой, а именно, командами типа INTN, гдеN– номер прерывания в некотором заданном диапазоне.
В упрощенном виде процедуру прерывания можно описать следующим образом. Объект, требующий внеочередного обслуживания, выставляет на соответствующем входе ЦП сигнал запроса прерывания. Перед переходом к очередному циклу команды процессор проверяет этот вход на наличие запроса. Обнаружив запрос, ЦП запоминает информацию, необходимую для продолжения нормальной работы после возврата из прерывания, и переходит к выполнению программы обработки прерывания (обработчика прерывания). По завершении обработки прерывания ЦП восстанавливает состояние прерванного процесса, используя запомненную информацию, и продолжает вычисления. Описанный процесс иллюстрирует рис. 2.25.
В терминах цикла команды сказанное выглядит так. Для учета прерываний к циклу команды добавляется этап прерывания, в ходе которого процессор проверяет, не поступил ли запрос прерывания. Если запроса нет, ЦП переходит к этапу выборки следующей команды программы. При наличии запроса процессор:
1. Приостанавливает выполнение текущей программы и запоминает содержимое всех регистров, которые будут использоваться программой обработки прерывания. Это называется сохранением контекста программы. В первую очередь необходимо сохранить содержимое счетчика команд, аккумулятора и регистра признаков. Контекст программы обычно сохраняется в стеке.
2. Заносит в счетчик команд начальный адрес программы обработки прерывания.
Теперь процессор продолжает с этапа выборки первой команды обработчика прерывания. Обработчик (обычно он входит в состав операционной системы) определяет природу прерывания и выполняет необходимые действия. Когда программа обработки прерывания завершается, процессор может возобновить выполнение программы пользователя с точки, где она была прервана. Для этого он восстанавливает контекст программы (содержимое СК и других регистров) и начинает с цикла выборки очередной команды прерванной программы. Соответствующая микропрограмма представлена ниже (с целью упрощения схемы некоторые тракты и сигналы управления не показаны, и соответствующие микрооперации отображают лишь логику выхода из прерывания).