ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.10.2024
Просмотров: 101
Скачиваний: 0
и допустимых форм кодирования, приведенной в конце описания стандартных форм в руководстве «Макрокоманды супервизора и управления данными».
Макрокоманда WAIT, помеченная именем Е4, предусматривает ожидание завершения выполнения подзадач В и С. Адреса блоков управления событием помещены в списке LIST2. Это — EVENT1 и EVENT2. Так как эти блоки управления событием были указаны в операндах ЕСВ макрокоманды ATTACH, программист не дол жен отмечать завершение подзадачи макрокомандой POST. Мак рокоманда POST выдается автоматически управляющей програм мой.
После завершения выполнения подзадач В и С программа А загружает в регистр 5 логическую сумму кодов завершения двух подзадач. Чтобы установить в нуль старший байт регистра 5, ко торый будет содержать отметки о завершении, используется коман да LA 5,0(5). Так как эта команда производит действия по прави лам адресной арифметики, разряды от 0 до 7 устанавливаются в нуль.
Далее необходимо проверить, равна ли полученная логическая сумма нулю. Команда LA не вырабатывает признак результата, поэтому используем команду LTR 5,5. Эта команда не производит никаких действий, кроме выработки признака результата. Если со держимое регистра 5 отлично от нуля, то происходит переход по метке ERROR. Это свидетельствует о том, что хотя бы один из ко дов завершения отличен от нуля. Если же оба кода завершения равны нулю, то происходит уничтожение подзадач В и С и завер шение выполнения программы А.
4.8. ОРГАНИЗАЦИЯ ПОВТОРНОГО ИСПОЛЬЗОВАНИЯ РЕСУРСОВ
Выше рассматривались повторно используемые программы, ко торые допускают последовательное выполнение и в отличие от ре ентерабельных программ не допускают параллельного выполнения. При появлении повторных запросов на выполнение такой програм мы их необходимо задерживать до завершения выполнения по пре дыдущему запросу.
При использовании макрокоманд LINK, XCTL и ATTACH про верка возможности повторного использования программы и орга низация поочередного использования производятся управляющей программой. Если управление такой программе передается с по мощью команд передачи управления или с помощью макрокоман ды CALL (т. е. без участия управляющей программы), то про граммист должен выполнять все эти действия для правильного ис пользования такой программы.
Повторно использоваться может не только программа, но и некоторое поле данных, которое используется и модифицируется несколькими задачами, выполняемыми одновременно. В таких
128
случаях часто бывает необходимо предусматривать, чтобы запрос на данные был задержан, если эти данные модифицируются дру гим запросом и модификация не завершена.
Для использования их ресурсов применяется макрокоманда ENQ, осуществляющая либо запрос на использование ресурса, ли бо проверку возможности использования ресурса. Освобождение повторно используемого ресурса, запрошенного ранее, производит ся макрокомандой DEQ.
Макрокоманда ENQ имеет следующий формат:
имя E N Q ( а д р е с и м ен и оч е р е д и , |
а д р е с им ени р есу р са , |
| J .[ р а з м е р и м ен и |
р е с у р с а ] , [|т|рЕМ ]■•>■). |
‘ , R E T = T E S T ] |
|
,R E T — U S E |
|
. ,R E T = H A V E j |
|
Каждый ресурс идентифицируется сочетанием имени очереди и имени ресурса. Указанные имена выбираются произвольно и могут не совпадать с истинным именем или названием ресурса, если тако вое имеется. Имя очереди представляет собой поле оперативной памяти из восьми символов. Адрес этого поля указывается в пер вом операнде. Имя ресурса представляет собой поле основной па мяти от 1 до 255 байтов и может быть составным. Адрес этого поля указывается во втором операнде, размер — в четвертом.
Третий операнд допускает значения Е или S. Значение Е обоз начает запрос на монопольное использование ресурса. Если ресурс используется в результате монопольного запроса, все следующие запросы на ресурс задерживаются до освобождения ресурса мак рокомандой DEQ. Монопольный запрос необходимо использовать, если ресурс изменяется в процессе выполнения запроса. Значение S определяет запрос на совместное использование ресурса. Совме стные запросы используются, если ресурс не изменяется в процес се выполнения запроса. Такой запрос может быть удовлетворен вместе с другими запросами на совместное использование. Если поступил запрос на монопольное использование, в то время как ресурс используется совместно, то такой запрос, а также все после дующие запросы задерживаются.
Значение STEP пятого операнда говорит о том, что ресурс ис пользуется только внутри пункта задания. Значение SYSTEM пя того операнда указывает, что ресурс используется программами нескольких пунктов заданий.
Ключевой параметр RET определяет условный запрос на ре сурс. Если указано TEST, то проверяется состояние ресурса путем выдачи кода возврата (0 — ресурс доступен, 4 — ресурс не досту пен, 8 — этой же задачей уже сделан запрос на ресурс). Если ука зано USE, ресурс используется, если это возможно; если это не возможно, то задача не задерживается, о чем свидетельствуют ко ды возврата 4 и 8, обозначающие то же, что и в предыдущем слу чае. Если указано HAVE, то это значит, что управление ресурсом
Э. Заказ 3414. |
129 |
требуется, если данная, задача не выдавала ранее запроса на ре сурс.
Макрокоманда DEQ имеет следующий формат:
[имя] DEQ (адрес имени очереди, адрес имени ресурса,
[размер имени ресурса], [ s y f f EM ].»•>)
[,RET=HAVE]
Назначение операндов то же, что и в макрокоманде ENQ. Пусть программа А производит загрузку в оперативную память
повторно используемой программы REUSMOD. Адрес точки входа загружается в регистр 2. Затем образуется подзадача В. Как про грамма А, так и программа В совместно используют программу REUSMOD, обращаясь к ней по макрокоманде CALL. Необхо димо предотвратить совместное одновременное использование про граммы REUSMOD.
Программа А имеет следующую структуру:
LOAD |
|
ЕР = REUSMOD |
LR |
|
2,0 |
ATTACH |
’ ЕР = В* |
|
LR |
|
15,2 |
ENQ |
|
(N, М, 7, STEP) |
CALL |
|
(15) |
анализ кода возврата |
||
DEQ' |
* |
‘ (N,"m ‘, 7, STEP)’ |
N * DC |
"CL8’QP |
|
M DC |
CL7’REUSMOD’ |
Программа В имеет следующую структуру:
|
LR |
15,2 |
M, E, 7, STEP) |
|
ENQ |
(N, |
|
|
CALL |
(15) |
- |
|
анализ кода возврата |
||
|
DEQ* |
’ (N, M.V, STEP) |
|
N |
DC * |
* CL8’QP * |
|
M |
DC |
CL7’REUSMOD’ |
Перед обращением к модулю адрес точки входа загружается в регистр 15, чего требует макрокоманда CALL. Далее макрокоман да ENQ выдает монопольный запрос на ресурс, определяемый име нами Q1 и REUSMOD. В данном примере в качестве имени ресур са используется имя точки входа. Однако это делать не обязатель-
но. Если программа REUSMOD будет занята, то задача, выдавшая запрос, попадает в состояние ожидания. В противном случае зада ча получает управление ресурсом и выдает макрокоманду CALL. После возврата управления и анализа кода возврата производит ся освобождение ресурса макрокомандой DEQ.
Рассмотрим второй пример, где в качестве ресурса будет исполь зован блок данных, занимающий поле из 80 байтов оперативной памяти. Программа А запрашивает 80 байтов и формирует этот блок данных. Начальный адрес поля, занимаемого этим блоком, загружается в регистр 2. Далее создаются две подзадачи В и С.
В процессе дальнейшего выполнения программа А модифици рует первое и второе слова указанного поля путем увеличения со держимого на единицу. В программе В первое и второе слова за гружаются в регистры 5 и 6, а в программе С — в регистры 9 и 10. Таким образом, программы В и С не изменяют содержимого поля. Однако необходимо обеспечить, чтобы между загрузкой первого
слова |
и загрузкой |
второго слова не произошло изменения поля |
||
программой А, |
т. е. |
чтобы первое и второе слова имели одинаковый |
||
уровень изменения. |
|
|||
|
Программа А имеет следующую структуру: |
|||
|
G E T M A I N |
R , L V = 80 |
||
|
L R |
2,1 |
|
|
|
A T T A C H |
Е Р = В ............................................................. |
||
|
A T T A C H |
Е Р = С ............................................................. |
||
|
E N Q ( N 1 , N 2 , Е , 4, S T E P ) |
|||
M l |
L |
3 ,0 (2 ) |
|
|
|
L A 3 ,1 (3 ) |
|
|
|
|
S T 3 ,0 (2 ) |
|
|
|
М 2 |
L |
3 ,4 (2 ) |
|
|
|
L A |
3 ,1 (3 ) |
|
|
|
S T |
3 ,4 (2 ) |
|
|
|
D E Q (N 1 , N 2 , 4, S T E P ) |
|||
N 1 D C |
* ' C L 8 ’Q Q 1 1' |
|
||
N 2 |
D C |
C L 4 ’RR1 Г |
|
|
|
Программа |
В имеет следующую структуру; |
E N Q
L
L ’
D E Q
M l D C М 2 D C
( M l , М 2 , S , 4, S T E P ) 5 ,0 ( 2 )
...........................................................................................................
6 ,4 (2 )
( M l , М 2 , 4, S T E P )
C L 8 ’QQ1 Г
C L 4 ’RR1 Г
9* |
131 |