Cтраница 4
В первом случае обмен информацией с внешним устройством производится по текущей программе, причем ЦП должен периодически обращаться к внешнему устройству, определяя, не появилась ли у него новая информация. При втором способе обмена работа процессора по текущей программе прерывается, если от внешнего устройства поступил сигнал о его готовности обменяться информацией, и он переходит на подпрограмму обслуживания данного устройства. Завершив обслуживание, процессор продолжает выполнение прерванной программы. [46]
В этих системах сигнал прерывания может формироваться в любой момент времени независимо от того, выполняется ли в это время программа реакции на какое-то условие прерывания или нет. Всякий раз при появлении очередного запроса программа, во время выполнения которой сформировался этот сигнал, прерывается, после чего включается программа, проверяющая, является ли вновь поступивший запрос более приоритетным, чем уже обрабатываемый в данный момент. Если приоритет работающей программы выше, то продолжается выполнение прерванной программы. Если же приоритет поступившего запроса выше приоритета работающей программы, то включается программа реакции на новое прерывание, а выполнявшаяся программа откладывается. [47]
Если УВМ управляет несколькими технологически связанными механизмами ( например, чистовой группой клетей непрерывного прокатного стана) и у одного из механизмов перегрелся подшипник двигателя, а у другого ток якоря превышает допустимые значения, то второе событие должно иметь уровень приоритета более высокий, чем первое. Задаче с более высоким приоритетом разрешается останавливать обработку задачи, имеющей приоритет низшего ранга. После завершения обслуживания высокоприоритетного прерывания система возвращается к выполнению прерванной программы. [48]
При возникновении причины прерывания запоминается состояние прерванной программы, в частности состояние всех операционных регистров машины, и осуществляется переход к выполнению подпрограммы, обрабатывающей причину прерывания. При этом уточняется причина прерывания и выполняются все необходимые действия по ее обработке. После обработки прерывания, если это устранимый сбой или экстренное задание, продолжается выполнение прерванной программы. [49]
Эта возможность аппаратуры состоит в том, что при появлении какого-либо события, требующего внимания со стороны диспетчера, происходит прерывание ( приостановка) выполнения программы и передача управления диспетчеру. При этом речь идет не о полном прекращении выполнения программы, а лишь о временной приостановке ее выполнения. Поэтому прерывание должно быть сделано так, чтобы в подходящий момент времени можно было продолжить выполнение прерванной программы так, как если бы с точки зрения программы никакого прерывания и не было. [50]
Одним из примеров немаскированного прерывания является прерывание при неполадках в электропитании. При падении напряжения в цепи питания центральный процессор с помощью резервных батарей быстро пересылает в память содержимое всех внутренних регистров и триггеров внутренних флажков. Если бы центральный процессор не смог ответить на это прерывание, то после восстановления напряжения питания выполнение прерванной программы не могло бы быть продолжено. [51]
В управляющих ЭВМ важную роль играют команды обработки прерываний. Дело в том, что управляющие ЭВМ должны быть способны совмещать обработку данных с действиями, необходимыми для управления многочисленными внешними устройствами, в частности устройствами связи с объектом управления. Для этого необходимо временно прекратить выполнение текущей программы обработки, выполнить программу обслуживания устройства, после чего вернуться к выполнению прерванной программы. Такое действие в отношении программы обработки называют ее прерыванием. [52]
Содержимое счетчика команд обычно не может служить достаточной информацией о состоянии для возобновления прерванной программы. Поэтому следующее действие состоит в запоминании состояния других регистров ЦП для последующего использования. В момент прерывания эти регистры содержат непосредственные результаты вычислений или обработки данных, а также другие данные, необходимые для возобновления выполнения прерванной программы. Как правило, нужно сохранить содержимое накопителя, других арифметических регистров, индексных регистров и регистра состояния прерывания. Если запоминание этих данных осуществляется программно, то программист может уменьшить время реакции системы, сохраняя лишь частично состояние ЦП. [53]
Операционная система для информации, поступающей с каждого пульта, выделяет свой участок памяти, границы которого записываются в ячейку, играющую роль команды обмена для этого абонента. Оператор с пульта передает заявку на обслуживание, заканчивая ее служебным знаком конец сообщения, и заявка поступает в главную память в режиме параллельной работы на выделенное операционной системой поле. Устройство управления обменом, расшифровывая знак конец сообщения, формирует сигнал прерывания, по которому диспетчер ставит принятую заявку в конец очереди на обслуживание и возвращает процессор к выполнению прерванной программы. [54]
![]() |
Организация прерываний на основе уровней. [55] |
Операция прерывания инициируется незамаскированным сигналом прерывания, имеющим наивысший приоритет среди других сигналов, и выполняется процессором. Операция прерывания состоит из следующих действий: 1) выполнение текущей программы прерывается; 2) запоминается информация, характеризующая состояние процессора на момент прерывания; 3) инициируется программа, соответствующая причине прерывания. Информация о состоянии процессора на момент прерывания обычно записывается в основную память, чтобы иметь возможность определить в программе команду, к моменту выполнения которой произошло прерывание, и в дальнейшем продолжить выполнение прерванной программы. [56]