Прерывания

Прерывания можно разбить на 4 типа:

· Программные прерывания Прерывание вызванное исполняемой программой по ошибке( деление на 0, ссылка на недоступную память, ...)

· Прерывания таймера Генерируются таймером процессора и позволяют системе выполнять свои задачи через заданные промежутки времени

· Прерывания ввода-вывода генерируются контроллером ввода-вывода. Сигналы о завершении операции или ошибке.

· Аппаратные прерывания генерируются аппаратурой: клавиатурой, мышью, принтером ...или при возникновении аварийных ситуаций: падение напряжения, ошибка памяти ...

Пример использования прерываний для повышения эффективности работы системы:

Допустим, программа состоит из 3 частей, между которыми выполняются команды ввода-вывода:

 

---1часть---|команда печати| ---2 часть---|команда ввода|---3часть---|команада сохранения|

 

1 вариант) исполнение такой программы без прерываний:

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

· аналогичные шаги выполняются для всех трех процедур ввода-вывода и при выполнении каждой из них программа ждет завершения операции ввода-вывода и только затем выполняется следующая часть

ВЫВОД: при таком способе образуется много простоев процессора во время операций ввода-вывода, хотя в это время процессор мог бы выполнять следующий действия программы – ведь он не используется при выполнении самой печати или вывода на диск ….

2 вариант ) исполнение программы с прерываниями:

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

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

· для всех остальных команд ввода-вывода выполняются аналогичные шаги

ИТОГ:

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

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

- дополнительное время использует обработчик, но это время не соизмеримо с временем ввода-вывода

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

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