Cтраница 1
Обработка программных прерываний производится средствами управляющей программы или программы пользователя. Некоторые трансляторы включают в программу пользователя собственную подпрограмму обработки отдельных прерываний. Программист может либо согласиться со стандартными действиями такой подпрограммы, либо предусмотреть собственную ( нестандартную) реакцию на прерывание. [1]
При обработке программного прерывания в старом PSW запоминается код прерывания, по которому пользователь может установить источник ошибки. СК указывает адрес следующей команды. [2]
Как происходит обработка программных прерываний. [3]
Если такого рода обработка программных прерываний нежелательна, то с помощью макрокоманды SPIE ( Special Program Interruption Exit - выход специальной программы обработки прерываний) программист может указать супервизору свою собственную программу для обработки программных прерываний. [4]
Программа, предназначенная для обработки программных прерываний, по содержимому старого ССП из таблицы определяет тип случившегося прерывания и его адрес. Это помогает в обработке прерывания. [5]
Если вмешательство Супервизора для обработки программных прерываний и аварийного завершения задачи нежелательно, можно воспользоваться макрокомандой Супервизора SPIE, с помощью которой Супервизор получает информацию о существовании программы обработки прерываний, созданной программистом. Программное прерывание, возникшее в программе, предназначенной для обработки программных прерываний, всегда вызывает аварийное завершение задачи. [6]
Каждая следующая макрокоманда SPIE изменяет содержимое области обработки программных прерываний или совсем исключает эту область. [7]
Если такого рода обработка программных прерываний нежелательна, то с помощью макрокоманды SPIE ( Special Program Interruption Exit - выход специальной программы обработки прерываний) программист может указать супервизору свою собственную программу для обработки программных прерываний. [8]
В совокупности блоки УМ выполняют следующие основные функции: инициирование и завершение работы системы; управление задачами и распределение памяти; обработку сигналов внимания от локальных дисплеев и опрос удаленных терминальных станций; модульное обеспечение специальных методов доступа; инициирование работы целевых модулей; обработку программных прерываний и аварийных ситуаций; обеспечение сохранности информации пользователей; накопление статистической и учетной информации. [9]
Программные прерывания делятся на прерывания по точкам разрыва, прерывания, определяемые пользователем, и прерывания по переполнению. Обработка программных прерываний не зависит от значения признака ра. [10]
Для модулей, написанных на языке ассембле-р а, компилятор среды не создает. Чтобы обеспечить нормальное функционирование программы для обработки программных прерываний и аварийных ситуаций, пользователь должен сам включить в свою программу соответствующие средства, например макрокоманды SPIE, STAE, ABEND и др. Механизм задания среды определяется также пользователем, который располагает его в любом месте исходного модуля макрокоманды задания среды. [11]
Если вмешательство Супервизора для обработки программных прерываний и аварийного завершения задачи нежелательно, можно воспользоваться макрокомандой Супервизора SPIE, с помощью которой Супервизор получает информацию о существовании программы обработки прерываний, созданной программистом. Программное прерывание, возникшее в программе, предназначенной для обработки программных прерываний, всегда вызывает аварийное завершение задачи. [12]
При выполнении программы может произойти программное прерывание. Причинами таких прерываний могут быть ошибки, допущенные программистом при описании алгоритма, нарушение требований операционной системы, противоречия, возникающие при обработке данных с заданными в программе условиями и др. Все программные прерывания регистрируются операционной системой, которая может выполнить некоторое стандартное действие или передать управление программе, написанном на языке ПЛ / 1, Таким образом, вмешательство программиста происходит в программе, написанной им для обработки программного прерывания. Если необходимо, прерывание можно игнорировать, тогда при его возникновении программа будет выполняться дальше. Игнорирование прерываний программы реализуется с помощью так называемых префикс-ситуаций, которые определяют для отдельного оператора или блока будет ли происходить прерывание при возникновении той или иной ситуации. [13]
Совокупность состояний выполнения позволяет создать иерархию запретов для обеспечения нескольких уровней защиты. Высшему уровню иерархии соответствует низший уровень запрета. Так, например, на нулевом уровне защиты можно иметь зашитые в память программу супервизора для обработки аппаратных и программных прерываний, а также указатели к таблицам сегментов для контроля размещения данных пользователя в виртуальной памяти. На втором уровне иерархии могут быть расположены программы супервизора для инициализации заданий, запуска на счет и окончания работы. И наконец, прикладные программы пользователя, которые вызываются и контролируются супервизором пользователя, относятся к уровню с наибольшим номером. В приведенном на рис. 5.6 примере показано пять уровней иерархии и соответственно запретов. [14]
При появлении программного прерывания Супервизор либо передает управление самой проблемной программе для обработки программного сбоя, либо прекращает выполнение задания, для которого эта программа выполнялась. Управление будет передано проблемной программе, если до появления сбоя Супервизору с помощью специальной макрокоманды было сообщено о наличии в проблемной программе подпрограммы обработки сбоев. Такой макрокомандой в ДОС ЕС является STXIT, в ОС ЕС - SPIE. Рассмотрим схему обработки программного прерывания, реализованную в ДОС ЕС. [15]