Система прерываний Прерывания представляют собой средство изменения последовательности выполнения команд и операций в ответ на внешние асинхронно происходящие события (запросы на прерывание).
Система прерываний выполняет ряд функций:
организация вхождения в прерывающую программу;
организация приоритетного выбора между запросами, поступающими одновременно;
организация возврата в прерванную программу.
Реализация прерываний оказывает значительное воздействие на производительность и гибкость системы.
Во время работы ЭВМ внутри нее самой или во внешней среде могут возникнуть события, требующие немедленных ответных действий.
Прерывание программы – это способность ЭВМ при возникновении определенных ситуаций, требующих немедленной реакции ЭВМ, прекратить выполнение текущей программы и передать управление программе, реализующей реакцию ЭВМ на возникшую ситуацию.
Реакция ЭВМ состоит в том, что процессор формирует управляющий сигнал, требуемый прекращения выполнения текущей программы, а затем формирует управляющий сигнал перехода к обработке другой программы, соответствующей происходящему событию. По завершении этой программы ЭВМ возвращается к выполнению текущей программы. Согласно заданию - система прерываний цепочечная на уровне макрокоманд (рис. 8).
Рис. 8 Структурная схема системы прерываний При цепочечном методе для передачи запроса прерывания модули ввода/вывода совместно используют одну общую линию. Линия подтверждения последовательно проходит через все МВВ. Когда ЦП обнаруживает запрос прерывания, он посылает сигнал по линии подтверждения прерывания. Этот сигнал движется через цепочку модулей, пока не достигнет того, который выставил запрос. Запросивший модуль реагирует путем выдачи на шину данных (в нашем случае на шину адресов/данных) своего вектора прерывания. Вектор содержит либо адрес МВВ, либо какой-нибудь другой уникальный идентификатор, который ЦП интерпретирует как указатель на соответствующую программу обработки прерывания. Такой подход устраняет необходимость в предварительных действиях с целью определения источника запроса прерывания и реализуется он с помощью, хранящейся в ОП таблицы векторов прерываний, где содержатся адреса программ обработки прерываний. Под таблицу отводится вполне определенная область памяти (начальный адрес задается неявно). Данная структура характерна более низкими затратами как аппаратных, так и программных средств на реализацию, но недостаток состоит в том, что приоритет устройства фиксирован и определяется порядком подключения, а также сигнал Interrupt Acknowledge (INTA) распространяется с некоторой временной задержкой.
Необходимо помнить, что при запоминании и восстановлении состояния процессора, все прерывания запрещены. Устройство, выставившее запрос, разрывает линию подтверждения (INTA). Алгоритм выполнения прерывания:
Распознавание запроса на прерывание. На границе инструкций процессор проверяет состояние линии запросов на прерывание (INT). Если неактивна, то обрабатывается следующая инструкция.
Запоминание состояния. При обработке прерываний процессор сохраняет в стеке словосостояние (регистр флагов и указатель следующего адреса).
Подтверждение прерывания. Процессор подает сигнал подтверждения и устройство, подавшее запрос на прерывание выставляет вектор/адрес на шину данных.
Вызов подпрограммы обработки прерывания. Процессор сбрасывает флаг разрешения прерываний, по вектору определяет адрес обработчика и выполняет его.
Восстановление и возврат. Восстанавливается словосостояние, устанавливается флаг разрешения прерываний.
1. Распознавание запроса на прерывание.
На этом этапе происходит распознавание процессором запроса на прерывание, поступающего по линии запросов на прерывание.
2. Запоминание состояния.
Нужно запомнить состояние прерванного процесса.
3. Маскирование прерываний.
Пока не будет запомнено состояние, все прерывания маскируются, потом разрешаются, в первую очередь прерывания с наиболее высоким приоритетом
4. Подтверждение прерывания.
Процессор подает сигнал подтверждения и устройство, подавшее запрос на прерывание выставляет вектор на шину данных.
5. Вызов подпрограммы обработки прерывания.
Устройство, запросившее прерывание само указывает адрес обработчика.
Другой способ заключается в том, что используется одна подпрограмма, которая опрашивает все устройства, чтобы определить, какое из них направило запрос на прерывание.
6. Восстановление и возврат.
При обработке прерываний на макроуровне, запрос прерывания, если он поступил в течение макроцикла, а уж тем более микроцикла (от асинхронных устройств), обрабатывается по окончанию текущей микропрограммы. Плюс в том, что не требуется дополнительных аппаратных затрат на проверку запроса прерывания в течение микроцикла, а минус – это то, что не всегда удается обеспечить оперативность ответа устройству, запросившему прерывание.
|