; 1000 вызовов
Блок GATE. Блок GATE управляет потоком транзактов с помощью логических операторов. Блок GATE, как и блок TEST, не изменяет никаких атрибутов транзактов. Он определяет номер следующего блока, к которому должен перейти транзакт из блока GATE. Блок GATE может задержать транзакт на входе, если не задан альтернативный выход. Блок GATE имеет такой формат:
GATE X А,[В]
Операнд А содержит имя или номер объекта, для которого производится проверка. Операнд А может быть именем, положительным целым числом, СЧА или СЧА*СЧА.
Операнд В содержит номер следующего блока для входящего транзакта, если логический оператор имеет значение «ложь». Операнд В может быть именем, положительным целым числом, СЧА или СЧА*СЧА. Если операнд В определен, то он должен содержать номер блока, допустимый для текущей модели.
В дополнительном операторе X задается один из следующих логических операторов:
1. Логические операторы, связанные с устройствами: NU - устройство/, заданное в операнде А, свободно;
U - устройство j, заданное в операнде А, занято (в результате выполнения транзактом блока SEIZE или PREEMPT);
|
|
N1 – устройство j, заданное в операнде А, не прервано;
I - устройство j, заданное в операнде А, обслуживает прерывания;
FV – устройство j, заданное в операнде А, доступно;
FNV – устройство j, заданное в операнде А, не доступно.
2. Логические операторы, связанные с МКУ:
SE – МКУ j, заданное в операнде А, пустое (S[j]=O);
SNE – МКУ j, заданное в операнде А, не пустое (S[j]<>0);
SF – МКУ j, заданное в операнде А, заполнено (R[j]=O);
SNF – МКУ j, заданное в операнде А, не заполнено (R[j]<>0);
SV – МКУ j, заданное в операнде А, доступно;
SNV – МКУ j, заданное в операнде А, не доступно.
3. Логические операторы, связанные с транзактами:
М - в блоке j, заданном в операнде А блока GATE, находится в состоянии синхронизации транзакт, принадлежащий тому же семейству, что и транзакт, который находится в блоке GATE или пытается войти в этот блок;
NM - в блоке j, заданном в операнде А блока GATE, в состоянии синхронизации нет ни одного транзакта, принадлежащего тому же семейству, что и транзакт, который пытается войти в блок GATE.
4. Логические операторы, связанные с логическими ключами:
LS - логический ключ j, заданный в операнде А, включен;
LR - логический ключ j, заданный в операнде А, выключен.
Режимы условного и безусловного входов в блок GATE. Блок GATE, как и блок TEST, может работать в режимах безусловного и условного вхождения.
В режиме безусловного вхождения транзакт никогда не задерживается на входе блока GATE. Если заданный логический оператор имеет значение «истина», транзакт пытается перейти к следующему по номеру блоку. Если логический оператор имеет значение «ложь», то транзакты будут пытаться перейти к блоку, номер которого задан в операнде В блока GATE. Выбор следующего блока производится один раз в момент вхождения транзакта в блок GATE.
|
|
В режиме условного вхождения, если операнд В блока GATE пустой (альтернативный выход не задан), транзакты не смогут войти в блок GATE до тех пор, пока указанный в этом блоке логический оператор не будет иметь значение «истина». Интерпретатор не проверяет значение логических операторов, за исключением операторов М и NM. В режиме условного вхождения задержанные транзакты находятся в списках задержки и, таким образом, исключаются из числа транзактов, обрабатываемых интерпретатором до тех пор, пока соответствующий логический оператор не примет значение «истина».