Нарушение (fault), Ловушка (trap), Авария (abort)

Опубликовано февраля 10, 2018 в Архитектура процессора Intel

1. Нарушение (fault) — это особый случай, который выявляется и обслуживается либо перед выполнением, либо во время выполнения «виновной» команды.

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

2. Ловушка (trap) — это особый случай, который возникает непосредственно после выполнения команды, вызвавшей этот особый случай.

В качестве адреса возврата прерванной программы используется адрес следующей программы по отношению к команде, вызвавшей срабатывание ловушки. Типичным примером ловушки может служить отладочное прерывание (ловушка пошагового режима).

3. Авария (abort) — является особым случаем, при котором невозможно точно локализовать вызвавшую его команду и, соответственно, осуществить рестарт (повторный запуск) программы. Авария используется для сообщения о крупных ошибках, таких как ошибки аппаратуры или ошибки в системных таблицах.

Команды перехода но счетчику

Ситуации, возникающие внутри ЭВМ (компьютера) и приводящих к прерыванию программы, можно разделить на следующие виды:

1. Особые случаи, возникающие при выполнении программы.

К ним относятся:

а) Ошибки при выполнении арифметических операций.

Примеры:

  • переполнение при сложении и вычитании целых чисел;
  • ошибка деления при выполнении одноименной операции над целыми числами;
  • переполнение порядка или исчезновение переполнения порядка (антипе-реполнение) при выполнении арифметических операций над числами с плавающей запятой.

б) Различные некорректности, которые могут иметь место в машинных командах.

Примеры:

  • некорректный код операции;
  • некорректный адрес команды или операнда (например, адрес, не выровненный на целочисленную границу);
  • некорректные данные (например, в качестве десятичной цифры используется двоичная тетрада, превышающая 1001).

в) Особые случаи, связанные с нарушением защиты памяти, точнее, защиты программ и данных, хранящихся в ней.

г) Особые случаи, связанные с организацией виртуальной памяти (например, отсутствие сегмента или страницы, к которым производятся обращения в основной памяти).

д) Выполнение специальных команд, имитирующих прерывание (в частности для процессоров Intel 80×86 к таким командам относится однобайтная INT, двухбайтная команда INTn с заданным типом прерывания, ШТо — прерьюание по переполнению). Эти команды используются для вызова определенных функций операционных систем.

е) Особый случай, связанный с отладочным режимом выполнения про-граммы. Например, в Intel 80×86 отладочный (пошаговый) режим выполнения программы имеет место при установке флага TF (флаг трассировки или ловушки). В старших моделях, начиная с Intel 80386, используются более мощные аппаратные средства поддержки механизма отладки программы в виде так называемых отладочных регистров DR0-H) R7 (Debug Registers).

NeoSpy — программа для слежения за компьютером& Установите удобную и надёжную систему контроля на свой компьютер на сайте: ru.neospy.net

2. Запросы прерываний от внешних (периферийных) устройств или каналов (процессоров) ввода/вывода (КВВ).

Эти запросы могут иметь место в следующих случаях:

а) ВУ (внешнее устройство), готовое к обмену, требует реакции процессора для организации передачи данных;

б) завершение работы ВУ или КВВ по передаче данных;

в) особая (аварийная) ситуация в ВУ или КВВ. Например, отсутствие бумаги в принтере, нарушение контроля передаваемых данных и т.д.

3. Сбои аппаратуры, обнаруженные встроенными средствами аппаратного контроля.

4. Запросы прерывания от средств отсчета времени.