Обработка прерываний
Прерывание вызывает ряд событий, которые происходят как в аппаратном, так и в программном обеспечении.
После завершения работы устройства ввода – вывода происходит следующее:
1. Устройство посылает процессору сигнал прерывания.
2. Перед тем как ответить на прерывание, процессор должен завершить исполнение текущей команды.
3. Процессор производит проверку наличия прерывания, обнаруживает его и посылает устройству, приславшему это прерывание, уведомляющий сигнал об успешном приеме. Этот сигнал позволяет устройству снять свой сигнал прерывания.
4. Теперь процессору нужно подготовить к передаче управления обработчику прерываний. Сначала необходимо сохранить всю важную информацию, чтобы в дальнейшем можно было вернуться к тому месту текущей программы, где она была приостановлена. Минимальная требуемая информация – это слово состояния программы и адрес очередной выполняемой команды, который находится в программном счетчике. Эти данные заносятся в системный управляющий стек.
5. Далее в программный счетчик процессора загружается адрес входа программы обработки прерываний, которая отвечает за обработку данного прерывания. В зависимости от архитектуры компьютера и устройства операционной системы может существовать как одна программа для обработки всех прерываний, так может быть и своя программа обработки для каждого устройства и каждого типа прерываний. Если для обработки прерываний имеется несколько программ, то процессор должен определить, к какой из них следует обратиться. Эта информация может содержаться в первоначальном сигнале прерывания; в противном случае для получения необходимой информации процессор должен по очереди опросить все устройства, чтобы определить, какой из них отправило прерывание.
Как только в программный счетчик загружается новое значение, процессор переходит к следующему циклу команды, приступая к ее извлечению из памяти. Т. к. команда извлекается из ячейки, номер которой задается содержимым программного счетчика, управление переходит к программе обработки прерываний. Исполнение этой программы влечет за собой следующие операции.
6. Содержимое программного счетчика и слово состояния прерываемой программы уже хранятся в системном стеке. Однако это еще не вся информация, имеющая отношение к состоянию исполняемой программы. Например, нужно сохранить содержимое регистров процессора, т. к. эти регистры могут понадобиться обработчику прерываний. Поэтому необходимо сохранить всю информацию о состоянии программы. Обычно обработчик прерываний начинает свою работу с записи в стек содержимого всех регистров.
7. Теперь обработчик прерываний можно начать свою работу. В процесс обработки прерывания входит проверка информации состояния, имеющая отношение к операциям ввода – вывода или другим событиям, вызвавшим прерывание. Сюда может также входить пересылка устройством ввода – вывода дополнительных инструкций или уведомляющих сообщений.
8. После завершения обработки прерываний из стека извлекаются сохраненные, ранее значения, которые вновь заносятся в регистры, возобновляя, таким образом то состояние, в котором они пребывали до прерывания.
9. Последний этап – восстановление из стека слово состояния программы и содержимого программного счетчика. Будет выполняться команда прерванной программы.
Планирование процессов
Дата добавления: 2015-12-01; просмотров: 967;