Every people has right on left Каждый человек имеет право на лево CopyLeft (L) Юрий А. Денисов
D.6.2. Прерывания: основные понятия.С помощью аппаратных прерываний осуществляется взаимодействие процессора с устройствами ввода-вывода ( клавиатурой, диском, модемом и т.п.), таймером и внутренними часами, сообщается о возникновении ошибки на шине или в памяти, об аварийном выключении сети и т.п. При возникновении аппаратного прерывания процессор выявляет его источник, сохраняет минимальный контекст текущей программы (включая адрес возврата), и переключается на специальную программу – обработчик прерывания ( interrupt handler). Эта программа правильно реагирует на возникшую ситуацию (например, помещает символ с клавиатуры в буфер, считывает сектор с диска и т.п.), что называется 1обслуживанием прерывания. После обслуживания прерывания процессор возвращается к прерванной программе, как будто прерываний не было. Программные прерывания обычно называются особыми случаями, или исключениями (exception). Особые случаи возникают, например, при делении на ноль, нарушения при защите по привилегиям, превышении длины сегмента, выходе за границу массива. Как правило, предсказать эти исключения невозможно. Однако встречающаяся в программе 1команда прерывания вполне предсказуема и находится под управлением программиста. Реакция процессора на программное прерывание такое же, как и на аппаратное прерывание, однако его обработка производится 1обработчиком особого случая (exception handler). Все особые случаи квалифицируются на: Нарушение (fault). Особый случай, который процессор может обнаружить до возникновения фактической ошибки (например – нарушение правил привилегий). После обработки нарушения можно продолжить программу, осуществив повторное выполнение (рестарт) виноватой команды. Иногда это исключение называют отказом. Ловушка (trap). Особый случай, который возникает после окончания виноватой программы. После обслуживания ловушки процессор продолжает выполнение программы с команды, находящейся после виноватой. Типичный пример – команда прерывания INT n в процессорах семейства x86 или прерывание при переполнении. Авария (abort) – возникает при столь серьезной ошибке, что контекст программы теряется и продолжать ее невозможно. Причину аварии установить нельзя, поэтому рестарт невозможен и ее необходимо прекратить. Иногда авария называется выходом из процесса. Обработка всех прерывания и особых случаев происходит, в общем, одинаково и состоит из двух основных этапов. На первом этапе процессор выполняет некоторые "рефлексивные" операции, которые одинаковы для всех прерываний и исключений, и которыми программист управлять не может. На втором этапе запускается созданный программистом обработчик прерывания или исключения. Все служебные действия процессор производит автоматически. Рассмотрим обработку прерывания по-подробнее.
|
|
=== *** === *** === *** ===
Copyright © Юрий А. Денисов. 2000-2002 г.
В настоящее время проект закрыт (в версии 1.00.3 alpha). Автор приносит извинения за прекрашение разработки.