Прерывания и их обработка.
Прерыванием называется реакция центрального процессора (CPU) на внутреннее или внешнее событие. Событием называется сигнал, поступающий в процессор в результате возникновения особого случая при выполнении команды или при работе с внешним оборудованием. Реакцией на событие является передача управления на программу, ответственную за обработку данного события. При этом в большинстве случаев сохраняется информация о состоянии прерванной задачи для того, чтобы можно было возобновить ее исполнение, если это возможно, либо завершить ее, освободив принадлежащие ей ресурсы.
Программа-обработчик прерывания (ПОП), как правило, является программой операционной системы, резидентной в оперативной памяти. Некоторые операционные системы (например, MS/DOS), позволяют заменить системный обработчик на пользовательский, либо соединить системный и пользовательский обработчики. Вся ответственность за неверные действия в этом случае лежит на пользователе. Неправильная работа обработчика прерываний приводит к разрушению вычислительного процесса, порче информации и «зависанию» системы. Поэтому в развитых операционных системах имеются средства контроля и восстановления информации при сбоях.
Система прерываний появилась в ЭВМ 2-го поколения, и явилась альтернативой обработке событий с помощью опроса: ожидая события, процессор может заниматься какой-либо другой полезной работой, а когда событие произойдет, процессор может заниматься какой-либо другой полезной работой, не дожидаясь полного завершения этой работы. Однако обработка прерывания сопряжена с достаточно большими накладными расходами, связанными с сохранением состояния прерываемой задачи (несколько регистров) и относительно сложным диалогом с вызвавшим прерывание устройством. Интервал между установкой сигнала прерывания и исполнением первой команды его обработчика называется задержкой прерывания и составляет десятки тактов.
Обработка прерывания состоит в сохранении счетчика команд и, возможно, некоторых других регистров (практически всегда сохраняется слово состояния процессора), и в передаче управления на адрес, определяемый типом прерывания. По этому адресу располагается программа-обработчик прерывания (ПОП), которая и осуществляет реакцию на соответствующее событие. Перед завершением обработчик восстанавливает регистры, и выполнение программы возобновляется с той точки, где она была прервана.
Разновидностью прерываний являются исключения – реакция на внутренние события в самом процессоре, такие, как неизвестный код операции, недействительный адрес памяти, деление на ноль, ошибка доступа в процессорах с виртуальной памятью и т.д. Исключения обрабатываются аналогично внешним прерываниям, с той лишь разницей, что исключение приводит к прекращению выполнения текущей команды, и сохранённый СчАК указывает на прерванную инструкцию. Во время обработки исключения ПОП может исправить неверную инструкцию, или изменить внешнюю ситуацию (например, подкачать с диска требуемую виртуальную страницу). Возврат из обработчика исключения приводит к попытке повторного исполнения команды.
Третьей разновидностью прерывания является авария. В таком случае не удаётся установить адрес прерываемой команды, и невозможно возобновить решение задачи. Например, такая ситуация возникает при двойном сбое. Реакцией на аварию может быть снятие текущей задачи со счёта, перезагрузка операционной системы или тяжёлый останов.
Принято различать следующие типы прерываний:
· Внутренние (т.е. исключения);
· Внешние (сигнал от таймера, клавиатуры, мыши, диска, линии связи);
· От ввода-вывода (сигнал об окончании операции на внешнем устройстве (ВУ));
· Программные;
· От схем контроля.
Программные прерывания вызываются специальной командой (в МП 80х86 это команда INT) и являются специфической формой вызова подпрограммы. В данном случае программа операционной системы вызывается по её номеру, заданному в виде операнда команды, а параметры передаются через регистры. Это позволяет любой программе обращаться к системным функциям, не зная адреса исполняющей их программы. Кроме того, пользовательская программа не требует модификации при изменении системного объекта-исполнителя.
Наличие системы прерываний позволяет организовать потоковый и интерактивный мультипрограммный режим работы, виртуальную память, обработку ошибок без останова вычислительного процесса, сетевые технологии и является неотъемлимой программно-аппаратной составляющей современных вычислительных комплексов и ОС.
Дата добавления: 2017-01-16; просмотров: 1600;