Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
59
Добавлен:
20.03.2015
Размер:
273.92 Кб
Скачать

7.2.5. Исключения

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

Любое событие, которое приводит к прерыванию, обычно называют исключе­нием. Следовательно, примерами исключений могут служить и прерывания вво­да-вывода. Ниже будет рассмотрен ряд других типов исключений.

Восстановление после ошибок

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

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

Если обработка исключения инициируется в результате подобной ошибки, процессор действует точно так же, как в случае запроса прерывания. Он приоста­навливает выполнение текущей программы и запускает программу обработки ис­ключения. Эта программа выполняет действия, необходимые для восстановления после ошибки (если это возможно), или информирует о ней пользователя. Как вы помните, в случае прерывания ввода-вывода процессор завершает выполнение текущей команды программы и лишь после этого начинает обработку прерыва­ния. Однако если прерывание происходит из-за ошибки, выполнение текущей ко­манды, как правило, завершить невозможно, поэтому процессор немедленно при­ступает к обработке исключения.

Отладка

Еще один важный тип исключений используется при отладке программ. Обычно в состав системного программного обеспечения входит программа под названием отладчик, помогающая программисту находить ошибки в коде. С помощью ис­ключений отладчик реализует две важные функции: пошаговое выполнение про­граммы (трассировку) и определение точек останова.

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

Похожую возможность предоставляют программисту точки останова, с той лишь разницей, что выполняемая программа останавливается не после каждой команды, а только в определенных, выбранных им точках. Для этого обычно при­меняется команда, называемая ловушкой или программным прерыванием. Вы­полнение этой команды приводит к тем же результатам, что и получение запроса аппаратного прерывания. При отладке программы пользователь может прервать ее выполнение после команды i.. Отладчик сохранит команду i + 1 и заменит ее командой программного прерывания. Когда выполняемая программа достигнет этой точки, она будет прервана и активизируется программа-отладчик. Это по­зволит пользователю проанализировать содержимое памяти и регистров. Когда пользователь будет готов продолжить выполнение отлаживаемой программы, от­ладчик восстановит сохраненную команду под номером i +1 и выполнит команду возврата из прерывания.

Исключения защиты

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

Соседние файлы в папке Архитектура компьютеров