Прерывания. Классы прерываний. Механизм прерываний.
Прерывание (англ. interrupt) — сигнал, сообщающий процессору о наступлении какого-либо события. Приостановление работы одной программы и передача управления другой при возникновении некоторого независящего от них события. При этом сохраняется возможность возврата управления прерванной программе, без потери ею работоспосодности.
Классы прерываний:
Программное прерывание. Генерируется в некоторых ситуациях, возникающих в результате выполнения команд. Такими ситуациями могут быть арифметичкое переполнение, деление на ноль, попытка выполнить некорректную команду и ссылка на область памяти, доступ к которой пользователю запрещен.
Прерывание по таймеру. Генерируется таймером процессора. Это прерывание позволяет ос выполнять некоторые свои функции периодически, через заданные промежутки времени.
Прерывание ввода-вывода. Генерируется контроллером ввода-вывода. Сигнализирует о нормальном завершении операции или о наличие ошибок.
Аппаратное прерывание. Генерируется при возникновении таких аварийных ситуаций, как, например, падение напряжения в сети или ошибка контроля четности памяти.
Механизм обработки прерываний представлен на схеме:
Основные функции супервизора прерываний:
· распознавание прерывания;
· передача управления соответствующей программе — обработчику прерываний;
· корректное возвращение к выполнению прерванной программы.
Прерывания, используемые при работе ЭВМ, можно разделить на внешние и внутренние.
Внешние прерывания инициируются событиями, происходящими вне выполняемого в данный момент времени процесса (прерывания от таймера, от устройств ввода-вывода, от другого процесса, по требованию оператора).
Внутренние прерывания возникают в результате событий, связанных с работой прерываемого процесса (обнаружение ошибки, деление на ноль, переполнение, обращение оп несуществующему адресу и др.). Особую группу составляют программные прерывания (заранее запланированные в ходе выполнения программы).
Реакция системы на прерывание определяется супервизором прерываний и в зависимости от его приоритета влечет за собой одно из следующих событий:
· немедленное выполнение прерывания;
· постановку его в очередь;
· игнорирование.
Если супервизор(центральный управляющий модуль ОС) дает команду на обработку прерывания, выполняются следующие действия:
· сохранение в дескрипторе (таблице) текущей задачи значений рабочих регистров;
· определение адреса начала программы выполнения прерывания (обращение в таблицу адресов прерываний);
· включение режима обработки прерываний;
· выполнение программы-обработчика прерываний;
· отключение режима обработки прерываний и восстановление из ранее созданной таблицы значений рабочих регистров для продолжения прерванного процесса.
·