# Вопрос 36: Виды внутренних прерываний
Прерывания, происходящие в результате событий, локализованных внутри модуля системы, например, в процессоре при делении на ноль, обрабатываются с помощью средств внутренних прерываний, в функции которых обычно входит распознавание причины прерывания (формирование вектора прерывания), сохранение текущего состояния процессора (SR, PC и т.п.) и загрузка в программный счетчик начального адреса подпрограммы, обрабатывающей данную ситуацию.
возникают, например, при нарушении защиты по привилегии, превышении размера сегмента, выходе за границы массива, делении на ноль и т.д. Возникновение данных ситуаций носит случайный характер и особые случаи невозможно предсказать.
Все особые случаи (внутренние прерывания) можно разделить на три группы:
* нарушение - это такой особый случай, который процессор может обнаружить до возникновения фактической ошибки (например, нарушение правил привилегий, превышение размера сегмента, нарушение атрибутов доступа к сегменту, недействительного кода операции и т.д.). После обработки нарушения (выполнения ППОП) можно продолжить программу путем повторного выполнения (рестарта) виноватой команды;
* ловушка - это такой особый случай, который процессор обнаруживает после окончания выполнения виноватой команды (например, прерывание при переполнении, большинство отладочных команд INT n). После обработки прерывания особого случая процессор возобновляет действия с той команды, которая находится после "захваченной" команды;
* авария - это ситуация, когда ошибка настолько серьезна, что ее невозможно устранить и продолжить выполнение программы. При аварии вычислительный процесс прекращается. К таким видам ошибок относятся аппаратные ошибки, обнаруживаемые ОС, или недопустимые значения в системных таблицах.
Обработка при нарушении правил привилегии необходима для защиты ОС. Привилегированной называется команда, выполнение которой разрешается только в системном режиме. К ним относятся: команды изменения содержимого регистра состояния и системных регистров процессора, команда возврата RTI из системного режима, команды останова HALT и сброса RESET, команды ввода-вывода IN и OUT и другие.