logo
Процессоры ПК

1.2 Понятие прерывания и основные виды прерываний

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

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

Механизм прерываний реализуется аппаратно-программным способом. Прерывание всегда влечет за собой изменение порядка выполнения команд процессором.

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

Система прерывания появилась в процессорах ЭВМ второго поколения, которые использовались, в основном, в качестве программных устройств управления различными объектами.

Основными причинами появления системы прерывания являются:

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

- желание разработчиков загрузить полезной работой процессор, во время, когда он ожидает сигнал от управляемого объекта, т.е. желание реализовать фоновую работу ЭВМ.

Главные функции механизма прерываний:

- распознавание или классификация прерываний;

- передача управления на обработку прерываний;

- корректное возвращение к прерванной программе.

Прерывания, возникающие при работе вычислительной системы, можно разделить на два основных класса:

- внешние (асинхронные);

- внутренние (синхронные).

Внешние прерывания вызываются асинхронными событиями, которые происходят вне прерываемого процесса, например:

- прерывания от таймера;

- прерывания от внешнего устройства (прерывания по вводу/выводу);

- прерывания по нарушению питания;

- прерывания с пульта оператора вычислительной системы;

- прерывания от другого процессора или другой вычислительной системы.

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

- нарушение адресации;

- наличие в поле адреса несуществующей инструкции;

- деление на нуль;

- переполнение или исчезновение порядка;

- ошибка четности;

- ошибка в работе различных аппаратных устройств.

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

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

Распределение прерываний по уровню приоритета (от низкого к высокому):

- программные прерывания;

- прерывания от внешних устройств: терминалов;

- прерывания от внешних устройств: сетевого оборудования;

- прерывания от внешних устройств: магнитных дисков;

- прерывания от системного таймера;

- прерывания от средств контроля процессора.

Процессор может обладать средствами защиты от прерываний:

- отключение системы прерываний;

- маскирование (запрет) отдельных видов прерываний.

Обычно операция прерывания выполняется только после завершения выполнения текущей команды.

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

Программное управление специальными регистрами маски (маскирование сигналов прерывания) позволяет реализовать различные дисциплины обслуживания:

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

- с абсолютными приоритетами, обслуживается прерывание с наибольшим приоритетом. В программе обслуживания прерываний следует наложить маски на сигналы прерывания с более низким приоритетом. Возможно многоуровневое прерывание, то есть прерывание программы обработки прерывания, число уровней меняется и зависит от приоритета запроса;

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

Управление ходом выполнения задач со стороны ОС заключается:

- в организации реакций на прерывание;

- в организации обмена информацией;

- в предоставлении необходимых ресурсов;

- в динамике выполнения задачи;

- в организации сервиса.

Причины прерываний определяет ОС (супервизор прерываний) и выполняет действия, необходимые при данном прерывании и в данной ситуации.

Супервизор прерываний выполняет следующие действия:

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

- определяет программу, обслуживающую текущий запрос на прерывание;

- устанавливает необходимый режим обработки пребывания;

- передает управление подпрограмме обработки прерывания.

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

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

Подпрограмма обработки прерываний состоит их трех секций:

1)отключение прерываний,сохранение контекста прерванной программы, установка режима работы системы прерываний;

2) собственно тело программы обработки прерываний;

3)восстановление контекста прерванной ранее программы, установка прежнего режима работы системы прерываний.

1-я и 3-я секции подпрограммы обработки прерываний -служебные, сохраняют и восстанавливают контекст задач. Поскольку эти действия необходимо выполнять практически в каждой подпрограмме обработки прерывания, во многих ОС первые секции подпрограмм обработки прерываний выделяются в специальный системный модуль - супервизор прерываний.