Во всех компьютерах предусмотрена реализация механизма прерываний, с помощью которого устройства могут прервать нормальную работу процессора.
В зависимости от источника прерывания делятся на четыре больших класса.
Таблица 1.1. Классы прерываний
Программное прерывание | Генерируется в ситуациях, возникающих в результате выполнения команд программы (арифметическое переполнение, деление на ноль, попытка выполнить некорректную команду, ссылка на область памяти, доступ к которой запрещен) |
Прерывание по таймеру | Генерируется таймером процессора (ОС имеет возможность выполнять некоторые свои функции через заданные промежутки времени) |
Прерывание ввода - вывода | Генерируется контролером ввода – вывода. Сигнализирует о нормальном завершении операции или наличии ошибок |
Аппаратное прерывание | Генерируется при возникновении аварийных ситуаций (падение напряжения в сети, ошибка контроля четности памяти и т.д.) |
Прерываниям приписывается приоритет, с помощью которого они ранжируются по степени важности и срочности. Очевидно, что прерывания от схем контроля процессора должны обладать наивысшим уровнем приоритета. На рис. 1.4 изображен обычный порядок обработки прерываний по приоритетам в зависимости от типа прерываний.
Прерывания обычно обрабатываются модулями операционной системы, так как действия, выполняемые по прерыванию, относятся к управлению разделяемыми ресурсами вычислительной системы - принтером, диском, таймером, процессором и т. п. Процедуры, вызываемые по прерываниям, обычно называют обработчиками прерываний или процедурами обслуживания прерываний (Interrupt Service Routine, ISR). Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств, исключения — специальными модулями ядра, а программные прерывания — процедурами ОС, обслуживающими системные вызовы. Кроме этих модулей в операционной системе может находиться так называемый диспетчер прерываний, который координирует работу отдельных обработчиков прерываний.
Средства контроля процессора |
Системный таймер |
Внешние устройства |
Программные прерывания |
Рис. 1.4. Порядок обработки прерываний по приоритетам
Чтобы согласовать прерывание с программой, в цикл команды добавляется цикл прерываний. В цикле прерываний процессор проверяет наличие сигналов прерываний. При поступлении прерывания процессор приостанавливает работу с текущей программой и выполняет обработчик прерываний. Этот модуль ОС определяет программу прерываний и выполняет необходимые действия (рис. 1.5).
Рис. 1.5. Цикл команды с прерыванием