15
Механизм обработки прерываний независимо от архитектуры
вычислительной
системы
подразумевает
выполнение
некоторой
последовательности действий:
-
шаг 1: установление факта прерывания (прием сигнала запроса на
прерывание) и идентификация прерывания;
-
шаг 2: запоминание состояния прерванного процесса вычислений.
Состояние процесса выполнения программы определяется значением
счетчика команд, содержимым регистров процессора, а также может
содержать спецификацию режима и другую информацию;
-
шаг 3: управление аппаратно передается на подпрограмму обработки
прерывания. В
простейшем случае в счетчик команд заносится начальный
адрес подпрограммы обработки прерываний, а в соответствующие регистры –
информация из слова состояния;
-
шаг 4: сохранение информации о прерванной программе, которую не
удалось спасти (на шаге 2) с помощью аппаратуры;
-
шаг 5: собственно выполнение программы, связанной с
обработкой
прерывания. Эта работа может быть выполнена той же подпрограммой, на
которую было передано управление на шаге 3, но в ОС достаточно часто она
реализуется путем последующего вызова соответствующей подпрограммы;
-
шаг 6: восстановление информации, относящейся к прерванному
процессу (этап, обратный шагу 4);
-
шаг 7: возврат в прерванную программу.
Шаги 1-3 реализуются аппаратно, шаги 4-7 – программно.
На рисунке 4.1 показано, что при возникновении запроса на прерывание
естественный ход вычислений нарушается и управление передается на
программу обработки возникшего прерывания. При этом средствами
аппаратуры сохраняется (с помощью механизмов стековой памяти) адрес той
команды, с которой следует продолжить выполнение прерванной программы.
После выполнения программы обработки прерывания управление
возвращается на прерванную ранее программу посредством занесения в
указатель команд сохраненного адреса команды, которую нужно было бы
выполнить, если бы не возникло прерывание. Однако такая схема
используется только в самых простых программных средах. В
мультипрограммных ОС обработка прерываний происходит по более
сложным схемам.
Главные
функции механизма прерываний:
1) распознавание или классификация прерываний;
2) передача управления соответствующему обработчику прерываний;
3) корректное возвращение к прерванной программе.
Переход от прерываемой программы к обработчику и обратно должен
выполняться как можно быстрей. Одним из самых простых и быстрых
методов является использование таблицы, содержащей перечень всех
допустимых прерываний и адреса соответствующих обработчиков. Для
корректного возвращения к прерванной программе перед передачей
16
управления обработчику прерываний содержимое регистров процессора
запоминается либо в памяти с прямым доступом, либо в
системном стеке
(system stack).
Рисунок 4.1 - Обработка прерывания
Прерывания, возникающие при работе вычислительной системы, можно
Достарыңызбен бөлісу: