Прерывания

Весьма важной частью ВС, обеспечивающей многопрограммность ее работы, является система прерывания программы. Система прерываний реализуется программно и аппаратно. Ее программные блоки в основном входят в ОС. Назначение системы прерывания состоит в том, что если по ходу работы ВС возникает необходимость выполнить срочную работу, не входящую в выполняемую в этот момент программу, то выполнение программы приостанавливается, включается подпрограмма требуемой работы и после ее выполнения вновь восстанавливается работа прерванной программы. Для этого при прерывании основной программы состояние всех основных регистров, в том числе и следующей команды основной программы, запоминается. После этого управление передается подпрограмме ОС, обрабатывающей прерывание. В конце подпрограммы ОС помещены команды, восстанавливающие состояние ВС перед прерыванием, и последней командой управление вновь передается основной программе. По сути, организация взаимодействия основной программы и подпрограммы обработки прерывания не отличается от организации обращения к библиотечной подпрограмме и выхода из нее. Только в случае библиотечной подпрограммы инициатива исходит от основной программы, а при прерывании - от аппаратно (или программно) выставляемого сигнала прерывания.

Прерывания делятся на внутренние и внешние. Внешние прерывания поступают от периферийных устройств, периферийных процессоров, таймера и пультовой машины на внешний регистр прерывания и, как правило, фиксируют статус внешнего устройства, например, завершение обмена с ВУ. Внутренние сигналы прерывания вырабатываются при возникновении аппаратных сбоев внутри процессора, при программных ошибках и в ряде специальных случаев. К конкретным причинам внутренних прерываний относятся: запрещенные команды в различных режимах, некомандный тег на РК, экстракод, переполнение сумматора АУ, ошибки памяти, совпадение адреса записи или чтения в Р+А с заданным и т.д. и т.п. Сигналы внутреннего прерывания имеют приоритет перед сигналами внешнего прерывания и блокируют дальнейшее выполнение программы Схемы, фиксирующие сбой/ошибку/статус устанавливают соответствующие разряды регистра внутренних или внешних прерываний в состояние "1".

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