Прерывания. Классы прерываний. Механизм прерываний.

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

Классы прерываний:

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

Прерывание по таймеру. Генерируется таймером процессора. Это прерывание позволяет ос выполнять некоторые свои функции периодически, через заданные промежутки времени.

Прерывание ввода-вывода. Генерируется контроллером ввода-вывода. Сигнализирует о нормальном завершении операции или о наличие ошибок.

Аппаратное прерывание. Генерируется при возникновении таких аварийных ситуаций, как, например, падение напряжения в сети или ошибка контроля четности памяти.

Механизм обработки прерываний представлен на схеме:

Основные функции супервизора прерываний:

· распознавание прерывания;

· передача управления соответствующей программе — обработчику прерываний;

· корректное возвращение к выполнению прерванной программы.

Прерывания, используемые при работе ЭВМ, можно разделить на внешние и внутренние.

Внешние прерывания инициируются событиями, происходящими вне выполняемого в данный момент времени процесса (прерывания от таймера, от устройств ввода-вывода, от другого процесса, по требованию оператора).

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

Реакция системы на прерывание определяется супервизором прерываний и в зависимости от его приоритета влечет за собой одно из следующих событий:

· немедленное выполнение прерывания;

· постановку его в очередь;

· игнорирование.

Если супервизор(центральный управляющий модуль ОС) дает команду на обработку прерывания, выполняются следующие действия:

· сохранение в дескрипторе (таблице) текущей задачи значений рабочих регистров;

· определение адреса начала программы выполнения прерывания (обращение в таблицу адресов прерываний);

· включение режима обработки прерываний;

· выполнение программы-обработчика прерываний;

· отключение режима обработки прерываний и восстановление из ранее созданной таблицы значений рабочих регистров для продолжения прерванного процесса.

·