В3: Понятие прерывания. Обработка прерываний

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

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

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

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

К аппаратным средствам относятся: выводыМП (INTR, INTA, NMI);контроллер прерываний (микросхема 8259А) или два контроллера (для AT); внешние устройства (клавиатура, таймер, ЖД).

К программным средствам относятся: таблица векторов прерываний; флагиврегистрефлагов: IF (InterruptFlag) иTF (TraceFlag); машинные команды МП: int, into, iret, cli, sti.

Для того чтобы иметь возможность вернуться точно в нужное место программы, адрес этого места - CS:IP запоминается в стеке, вместе с регистром флагов. Затем в CS:IP загружается адрес программы обработки прерывания (ISR - InterruptSubRoutine) и ей передается управление. Программы обработки прерываний иногда называют драйверами прерываний (handler) или просто обработчиками. Они всегда завершаются командой IRET (возврат из прерывания), которая завершает процесс, начатый прерыванием, возвращая старые значения CS:IP и регистра флагов, тем самым, давая программе возможность продолжить выполнение из того же состояния.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: