Блоки, изменяющие маршруты транзактов
Блоки, изменяющие маршруты транзактов.
GATE O A,B
Этот блок используется для определения состояния объектов устройств без изменения собственно их состояний и работает в двух режимах:
1) Отказа или условного входа. При работе в этом режиме блок не пропускает транзакты, если соответствующий объект не находится в требуемом состоянии.
2) Перехода или безусловного входа.
Поле А определяет номер объекта аппаратной категории (устройства, памяти или ключа).
Если в поле В указано наименование или номер блока, то вместо отказа блок GATE будет посылать транзакт на указанный адрес. Следовательно, если поле В пусто, то блок работает в режиме отказа, - нет – в режиме перехода.
Существуют специальные логические атрибуты, описывающие состояние устройств, памятей, ключей и условий синхронизации. Мнемонические обозначения проверяемого условия записываются непосредственно после GATE.
Состояние устройства описывается следующими условиями:
- FNU — устройство не используется, свободно;
- FU — устройство используется, занято (обслуживает захвативший транзакт или прерывание);
- FNI — устройство работает без прерывания (свободно или обслуживает захвативший его транзакт);
- FI — устройство обслуживает прерывание;
- FV — устройство доступно;
- FNV — устройство недоступно.
Рекомендуемые материалы
Могут быть две мнемонические записи , которые позволяют проверить условие синхронизации:
M – выполнение условия
NM – невыполнение условия
Пример.
GATE SF,16
Состояние памяти описывается условиями:
· SE - память пуста;
· SNE — память не пуста;
· SF — память заполнена;
· SNF - память не заполнена;
· SV - память доступна;
· SNV — память недоступна.
Состояние ключа описывается двумя условиями:
· LR — логический ключ в состоянии «выключен»;
· LS — логический ключ в состоянии «включен».
Пример:
GATESF 167 - блокировать транзакт до тех пор, пока память 167 не будет заполнена.
GATELS 265 - блокировать транзакт до тех пор, пока ключ 265 не установлен
GATEFU 19 - блокировать транзакт до тех пор, пока устройство 19 не освободится
GATEFI 34,ALTR - если устройство 34 прервано, то перейти к ALTR
TEST O A,B,C
Описывает условие, которое проверяет при входе в него транзакта и определяет направление его дальнейшего движения в зависимости от условия, которое записывается в виде алгебраического соотношения двух аргументов.
При выполнении соотношения транзакт пропускается в следующий за блоком TEST блок. В случае невыполнения транзакт направляется в блок, метка которого указана в поле С. Если поле С пусто, то транзакт блокируется данным блоком до выполнения соотношения.
Проверяемое соотношение записывается сразу за блоком TEST, при этом используются классические мнемонические обозначения операции отношения.
Соотношение рассматривается между первым и вторым компонентами записываемых в полях А и В. Аргументы должны принадлежать к стандартным числовым атрибутам. Условие указывается сразу за именем оператора. Символы условий:
- G - больше,
- L - меньше,
- E - равно,
- NE - неравно,
- LE - меньше или равно,
- GE - больше или равно.
В случае не выполнения условия транзакт направляется в оператор, метка которого указана в поле С. Если поле С пусто, то транзакт при выполнении условия не сможет войти в блок TEST и управляющая программа в каждый момент модельного времени будет проверять, не изменилось ли блокирующее условие. Такой режим является нежелательным вследствие больших затрат машинного времени на многократную проверку блокирующего условия.
Пример.
TESTE V7,256,LAB - переход по условию (условная передача управления): перехода нет, если переменная V7 = 256, иначе переход к оператору с номером LAB.
TESTL S1,10 – если число транзактов в памяти S1<10, то выполнять следующий оператор. Иначе остановить движение транзакта.
TESTG C1,120 - если системное время больше 120 единиц, то выполнять следующий оператор. Иначе остановить движение транзакта.
TESTE P1,2,MET1 - перехода нет, если переменная первый параметр транзакта равен 2, иначе переход к оператору с номером MET1.
TRANSFER A,B,C,D
Этот блок обычно используется для того, чтобы передать в него транзакты не следующие по номеру за ним. Передача может быть выполнена – логически, статистически, условно и безусловно.
Вид передачи определяется мнемоническим изображением указанным в поле А. Если безусловно, то указывается один следующий блок.
Поле В определяет первый или единственный из следующих блоков.
Поле С определяет следующий блок и интерпретируется с режимом работы блока TRANSFER.
- Если поле А пусто, то все транзакты приходящие на этот блок будут переданы на блок, определяемый в поле В.
- Если в поле А стоит BOTH, то каждый транзакт поступающий в этот блок проверяет два пути. Сначала проверяется блок указанный в поле В и если транзакт не может войти, то он пытается войти в блок указанный в блоке С, а если он не может войти и туда, то вынуждены опять постоянно проверять эти условия. И происходит задержка в блоке TRANSFER.
- Если в поле А стоит ALL, то транзакты входящие в блок могут опрашивать много путей. Поле В – в этом случае определяет первый определяемый блок, поле С – последний, поле D – индексную константу, которая предоставляет пользователю возможность пользователю опрашивать определенные блоки, находящиеся между первым и последним.
- Если стоит SIM, то выбирается один из возможных путей.
Статистический режим выбора
Если в поле А блока TRANSEFER записана десятичная дробь, то производится случайный выбор между блоками В и С. Вероятность перехода в блок С и задает эта дробь.
Пример.
Рекомендуем посмотреть лекцию "64 Состав наследственного имущества, подлежащего разделу".
TRANSFER 0.607,Work1,Work // транзакт с вероятностью 0.607 пойдет на второго рабочего, а с вероятностью 1-0.607 перейдет к оператору с меткой Work1.
TRANSFER PICK,STK7,STK21 // равновероятный переход к операторам с номерами STK7, STK7+1, STK7+2, . . . , STK21.
TRANSFER FN,AAA,5 // переход к оператору, метка которого равна сумме значения функции AAA и числа 5.
TRANSFER .P5,,МЕТ // трехзначное число, записанное в параметре 5 транзакта, интерпретируется как вероятность (в долях от тысячи) того, что транзакт будет передаваться на метку МЕТ, а в остальных случаях – следующему оператору.
TRANSFER P,4,41 // переход к оператору, метка которого равна сумме значения параметра 4 транзакта и числа 41.
TRANSFER SBR,PRC,7 // переход к оператору PRC с записью метки данного оператора в параметр 7 транзакта.