СИСТЕМА ПРЕРЫВАНИЙ

 

Ситуация, которая возникает в результате воздействия какого-то независимого события, приводящего к временному прекращению выполнения последовательности команд одной программы с целью выполнения последовательности команд другой программы, называется прерыванием. Управление процессами в многозадачном режиме работы ЭВМ основано на использовании механизма прерываний. Прерывания необходимы, например, при обслуживании очередей запросов на распределение ресурсов, при проведении синхронизации между параллельными процессами и т.д. Программа может быть прервана из-за отсутствия в оперативной памяти данных, подлежащих обработке, или может быть прервана программой с более высоким приоритетом. Причиной прерывания может быть неисправность в работе аппаратуры, обнаруженная системой диагностики.

В зависимости от системной причины можно выделить прерывания первого и второго рода.

В случае прерывания первого рода процесс сам является «виновником» прерывания, т.е. процесс, находящийся в активном состоянии, вызывает прерывание самого себя. Это происходит в следующих ситуациях:

1) возникает потребность получить некоторый ресурс, отказаться от него либо выполнить над ресурсом какие-либо действия;

2) процесс выполняет какие-либо действия в отношении другого процесса, например, порождает или уничтожает его.

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

Системной причиной прерывания второго рода является необходимость синхронизации параллельных процессов. Процессы, подчиненные ОС, в случае их окончания или в других ситуациях вырабатывают сигнал прерывания, что приводит к прекращению обслуживания ЦП других активных процессов «без их ведома».

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

1) восприятие запроса на прерывание;

2) запоминание состояния прерванного процесса (значение счетчика команд, содержимое регистров общего назначения, режим работы ЦП и т.д.);

3) передача управления программе обработки прерываний, для чего в счетчик команд заносится адрес, уникальный для каждого типа прерывания;

4) обработка прерывания;

5) восстановление нормальной работы.

В большинстве ЭВМ этапы 1-3 реализуется аппаратно, а этапы 4-5 - операционной системой.

 

 

Рассмотрим изменения состояний центрального процессора, связанные с возникновением и обработкой прерываний (рис.7). ЦП может функционировать в одном из четырех независимых состояний: P1 – выполнение прикладных программ, P2 – обработка прерываний, P3 – анализ прерываний, P4 – обработка прерываний от схем контроля машины. В состоянии P1 выполняются программы пользователя, выполнение любого прерывания допустимо. В состоянии P2 выполняется программа соответствующего обработчика прерываний, так же как и в предыдущем состоянии допустимо любое прерывание. В состоянии P3 система определяет тип прерывания и соответствующую программу его обработки. Переключение в состояние P3 из состояний P1 и P2 происходит всегда автоматически при возникновении любого прерывания, кроме прерываний от схем контроля машины. Переключение ЦП из состояния P3 в состояние P1 или P2 происходит по командам управления. В состоянии P3 все прерывания, кроме прерываний от схем контроля, запрещены. Процессор автоматически переключается в состояние P4 из любого состояния (P1, P2, P3) при появлении прерывания от схем контроля машины. Из состояния P4 нельзя вернуться ни в какое другое состояние без принятия мер по устранению сбойной ситуации.

 

 

 
 

 

 


Рис. 7. Характер переходов процессора между допустимыми состояниями, обусловленных возникновением и обработкой прерываний

 

 

В зависимости от характера прерываний можно выделить пять уровней:

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

· прерывание при обращении к ОС с целью получения каких-либо услуг;

· программные или внутренние прерывания, связанные с ошибками в ЦП при выполнении программы;

· внешние прерывания, обусловленные прерыванием программы оператором, по сигналу из линии связи и т.д.;

· прерывания от устройств ввода-вывода, инициированные внешними процессами.

 

Для каждого уровня прерываний в ОС имеются системные программы обработки прерываний. Нередко поступает сразу несколько запросов на прерывания, при этом они выстраиваются в очередь в соответствии со своими приоритетами. Порядок поступления запросов строго определен:

1) прерывания от схем контроля;

2) программные прерывания или прерывания при обращении к ОС (не могут появляться одновременно);

3) внешние прерывания;

4) прерывания от устройств ввода-вывода.

Обработка прерываний происходит в порядке, обратном его поступлению и соответствует их важности: ввод-вывод, внешние, программные и обращения к ОС. Прерывания от схем контроля идут вне очереди и блокируют обработку всех других прерываний.

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

Прерывания поступают на обработку, если процессор не замаскирован по отношению к данному типу прерываний. Маскирование – это запрет на прерывания. Если прерывания замаскировано и поступил запрос на него, то он либо ждет, пока сможет быть воспринят, либо теряется. Замаскированными могут быть прерывания от устройств ввода-вывода, внешние прерывания, часть программных прерываний и прерывания от схем контроля.

Замаскированные прерывания от устройств ввода-вывода и внешних прерываний хранятся до тех пор, пока ЦП не сможет их воспринять, а замаскированные программные прерывания от схем контроля теряются.

Информация, необходимая для обработки прерываний, запоминается в специальной области памяти в виде регистра и слова-состояния программы (ССП). Регистр прерываний представляет собой слово, каждый бит которого соответствует единственной причине прерывания.

Слово состояния программы хранит информацию о состоянии процессора для последующего анализа, восстановления нормального продолжения прерванной программы.