Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ОПЕРАЦИОННЫХ СИСТЕМ.doc
Скачиваний:
80
Добавлен:
09.11.2019
Размер:
4.83 Mб
Скачать

2.4. Концепция прерывания

2.4.1. Назначение и типы прерываний

Концепция прерывания (interruption, INT) берет свое начало с того момента, когда разработчики компьютеров поняли, что без прерываний в работе ВС не обойтись и это обстоятельство можно применить с пользой: сделать прерывание основным механизмом функционирования ОС [1-4]. Примеры необходимости прерываний: в ОП отсутствуют данные, необходимые активной задаче; произошло событие, когда что-то случилось, появилось или закончилось в системе; более приоритетной задаче требуется процессор.

Прерывания являются движущей силой любой ОС [1, 2]. Например, периодические прерывания от таймера вызывают смену процессов в мультипрограммной ОС, а прерывания от УВВ управляют потоками данных, которыми ВС обменивается с внешним миром. Система прерываний переводит процессор на выполнение иного потока команд вместо текущего (исходного) потока с последующим возвратом к исполнению исходного кода.

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

В зависимости от источника прерывания делятся на 3 класса: внешние, внутренние и программные [2].

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

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

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

Прерываниям приписывается приоритет, на основе которого они ранжируются по степени важности и срочности. Прерывания с равными приоритетами образуют свой уровень приоритета.

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