Типы прерываний

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

В зависимости от источника прерывания делятся на четыре больших класса.

 

Таблица 1.1. Классы прерываний

 

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

 

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

Прерывания обычно обрабатываются модулями операционной системы, так как действия, выполняемые по прерыванию, относятся к управлению разделяемыми ресурсами вычислительной системы - принтером, диском, таймером, процессором и т. п. Процедуры, вызываемые по прерываниям, обычно называют обработчиками прерываний или процедурами обслуживания прерываний (Interrupt Service Routine, ISR). Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств, исключения — специальными модулями ядра, а программные прерывания — процедурами ОС, обслуживающими системные вызовы. Кроме этих модулей в операционной системе может находиться так называемый диспетчер прерываний, который координирует работу отдельных обработчиков прерываний.

 

 
 


Средства контроля процессора
Системный таймер  
Внешние устройства  
Программные прерывания  

 

Рис. 1.4. Порядок обработки прерываний по приоритетам

 

Чтобы согласовать прерывание с программой, в цикл команды добавляется цикл прерываний. В цикле прерываний процессор проверяет наличие сигналов прерываний. При поступлении прерывания процессор приостанавливает работу с текущей программой и выполняет обработчик прерываний. Этот модуль ОС определяет программу прерываний и выполняет необходимые действия (рис. 1.5).

Рис. 1.5. Цикл команды с прерыванием