Обработка прерываний

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

После завершения работы устройства ввода – вывода происходит следующее:

1. Устройство посылает процессору сигнал прерывания.

2. Перед тем как ответить на прерывание, процессор должен завершить исполнение текущей команды.

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

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

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

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

 

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

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

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

9. Последний этап – восстановление из стека слово состояния программы и содержимого программного счетчика. Будет выполняться команда прерванной программы.

Планирование процессов








Дата добавления: 2015-12-01; просмотров: 910;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.