Краткое описание инструмента и ремесла программирования. Степанов А.Г - 23 стр.

UptoLike

23
Очень часто прерываемую программу называют фоновой, а
прерывающуюпрограммой обработки прерывания. Существует несколько
видов прерываний процессора:
аппаратные (инициируются аппаратурой контроллеров внешних
устройств), могут произойти в любой момент времени независимо
от хода выполнения команд процессором;
логические (инициируются аппаратурой процессора при
возникновении нестандартных ситуаций при вычислениях,
например, деления на ноль), могут произойти только после
завершения выполнения очередной команды процессора;
программные (инициируются выполняющейся программой
специальными командами вызова прерывания) могут произойти
только после завершения выполнения очередной команды
процессора.
Для организации аппаратных прерываний в аппаратуру ЭВМ заложены
специальные блоки, отвечающие за этот режим, называемые контроллером
прерываний. Каждое устройство ввода-вывода подключается к отдельному
входу контроллера прерываний. Возникновение ситуации, связанной с
изменением содержимого регистра состояния, вызывает возникновение
аппаратного сигнала прерывания от устройства. В ответ на такой сигнал
контроллер прерываний формирует сигнал запроса на прерывание,
передаваемый процессору.
Обрабатывая прерывание (рис. 1.11), процессор завершает выполнение
ранее выполнявшейся команды фоновой программы, сохраняет содержимое
счетчика команд и флажков (см. рис. 1.7) в специальной области памяти,
называемой стеком. После этого процессор обращается к контроллеру
прерываний и получает от него число, называемое вектором прерываний. Если
имеет место логическое или программное прерывание, то номер вектора
прерывания закодирован в команде, вызывающей такое прерывание. Сам
вектор прерываний представляет собой адрес ячейки памяти, в которой
находится
адрес начала программы обработки прерываний. Из ячейки памяти,
заданной для конкретного прерывания, в счетчик команд записывается новое
значение, после чего процессор начинает выполнять программу обработки
прерывания. Ее последней команда должна быть команда возврата из
прерывания, выполняя которую процессор восстанавливает старое содержимое
счетчика команд, флажков и продолжает выполнение прерванной программы.
Очевидно, что
при обмене в прерываниях процессор освобожден от
неэффективной работы по опросу содержимого регистра состояния и
отвлекается от фоновой программы на обмен только тогда, когда это
необходимо. Освободившееся время процессора может быть использовано на
выполнение программ, не требующих ввода-вывода.
Прерывания процессору могут быть разрешены или запрещены.
Некоторые виды прерываний запретить нельзя, такие прерывания называют
немаскируемыми. Программа обработки прерывания в свою очередь может
быть прервана. В этом случае речь идет о вложенных прерываниях (рис. 1.12).
Вложенные прерывания могут быть разрешены и запрещены. Возврат из
вложенного прерывания производится в ту программу, которая была прервана.
Если вложенные прерывания разрешены, то их возможное количество
определяется глубиной стека.