Пересылки по прерыванию

Система прерывания программ ЭВМ

 

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

Запросы прерывания вызываются внутренними причинами и внешними источниками.

Внутренние причины:

· сбой в аппаратуре, в том числе в системе электропитания;

· переполнение разрядной сетки при выполнении команды;

· нарушение правил адресации;

· попытка деления на 0.

Внешние источники:

· периферийные устройства, в том числе терминалы пользо­вателя;

· аппаратура передачи данных от удаленных терминалов и других ЭВМ;

· датчики технологического процесса и т. п.

Специальные программы обработки прерывания могут входить как в стандартное общее программное обеспечение, так и создаваться конкретным пользователем. Очевидно, что большинство внутренних запросов прерывания должны обра­батываться стандартным образом. Совокупность специальных аппаратных средств и стандартных программ обработки пре­рываний составляют систему прерывания программ. К ее функциям относятся:

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

б) приоритетный выбор запроса для исполнения из поступивших запросов и организация перехода к соответствую­щей обрабатывающей программе;

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

г) программное изменение приоритетов запросов.

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

 

 

Последовательность действий в алгоритме пересылок по прерыванию может быть описана следующими шагами:

1. Периферийное устройство запрашивает прерывание, выставляя сигнал «Запрос» на соответствующий вход процес­сора.

2. Процессор завершает выполнение очередной команды текущей программы и, если он находится в состоянии «раз­решения прерываний», проверяет наличие сигнала «Запрос». (В режиме «запрещения прерывания» проверка входа «За­прос» не производится). При обнаружении сигнала «Запрос» процессор переходит в состояние ожидания и выставляет на линию «Добро» (подтверждение прерывания) соответствую­щий уровень сигнала.

3. ПУ принимает сигнал «Добро» и выставляет на шину данных двоичный код, идентифицирующий данное устройст­во. Одновременно на линию «Готов» выставляется соответст­вующий сигнал.

4. Приняв сигнал «Готов», процессор снимает идентифи­цирующий ПУ код с шины данных и организует переход к программе обработки данного прерывания аналогично пере­ходу к обычной подпрограмме (например, используя стек).

5. Первыми командами подпрограммы обработки преры­вания должно быть обеспечено сохранение (в стеке) значений флагового регистра и регистров РОН, соответствующих моменту прерывания текущей программы. Далее в подпро­грамме обработки прерывания производятся программно-уп­равляемая пересылка данных (например, по асинхронному алгоритму) и, возможно, какие-либо преобразования.

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

7. Возобновляется счет по прерванной программе.

Код, идентифицирующий выдавшее запрос прерывания ПУ, ис­пользуется тем или иным способом (в зависимости от конст­рукции процессора) для определения начального адреса хра­нящейся в главной памяти программы обработки данного запроса — вектора прерывания. Кроме описанного выше «векторного» способа обработки запросов существуют и другие. Однако данный способ имеет в настоящее время наиболь­шее распространение.

 

Рисунок 1.4.1 – Схема обработки внешних прерываний