Блоки, изменяющие маршрут движения транзактов.
Для изменения маршрута движения транзактов используются блоки, представленные в таблице 1.10.
Таблица 1.13 Операторы, изменяющие маршрут движения транзактов
№ | Блок | Описание |
GATE O A,B | Изменение движения маршрута в зависимости от состояния некоторого объекта | |
TEST O A,B,C | Сравнение значения и управление местом назначения активного транзакта, основываясь на результате сравнения | |
LOOP A,B | Изменение параметра и управление местом назначения активного транзакта, основываясь на результат | |
TRANSFER A,B,C,D | Обеспечение перехода активного транзакта к новому блоку |
В поле операции блока GATE после идентификатора операции с пробелом в одну позицию записывается операнд О, который является логическим оператором, перечень которых приведен в пункте 1.3. В операнде А указывается идентификатор объекта аппаратной категории. Транзакт, вошедший в блок GATE, проверяет выполнение поставленного операндом О условия и если оно выполняется, то он не меняет маршрута своего движения, а переходит к следующему блоку. При невыполнении поставленного условия, транзакт переходит к метке, указанной в операнде В.
В поле операции блока TEST записывается операнд О, который является условным оператором, перечень которых приведен в пункте 1.3, но из них нельзя использовать операторы MIN и MAX. В операнде А указывается первый сравниваемый СЧА, в операнде В второй. Между ними действует операнд О и если поставленное в нём условие выполняется, то транзакт переходит к следующему блоку, а иначе к метке, которая указана в операнде С.
Блок LOOP предназначен для организации цикла. В операнде А блока записывается идентификатор параметра, в котором указывается сколько раз требуется повторить цикл. В операнде В указывается метка начала цикла. Отметим, что для организации цикла до его начала требуется задать количество повторений цикла в выбранном для этого параметре.
Блок TRANSFER имеет множество модификаций:
1. Безусловный переход транзакта. В этом режиме операнд А остается пустым, а после запятой в операнде В указывается метка, к которой передается транзакт.
2. Режим статистической передачи. С вероятностью, указанной в операнде А транзакт передается на метку, идентификатор которой указан в операнде С и с вероятностью единица минус указанная на метку, указанную в операнде В. Если метка, указанная в операнде В, следует сразу после блока TRANSFER, то ее можно не указывать.
3. Режим BOTH. В операнде А записывается символ модификации выбора по условию – BOTH. Транзакт, вошедший в блок TRANSFER пытается занять устройство, метка которого указана в операнде В, если это не удаётся то занять устройство, метка которого указана в операнде С, если и это ему не удаётся, то транзакт остаётся в блоке TRANSFER до тех пор, пока не появится возможность занять одно из указанных устройств. Если метка, указанная в операнде В, следует сразу после блока TRANSFER, то ее можно не указывать.
4. Режим FN. В режиме FN место назначения активного транзакта выбирается путем вычисления функции, заданной в операнде B.
Примеры использования описанных выше блоков приведены в таблице 1.14..
Таблица 1.14 Примеры использования операторов операционной категории
Пример использования оператора | Комментарии |
GATE SNF STORAGE_1 | Активный транзакт входит в блок GATE, если память с именем STORAGE_1 не заполнена. Если память заполнена, активный транзакт блокируется до тех пор, пока 1 или более элементов памяти не станут доступными |
GATE SNE STORAGE_1,METKA_EXIT | Активный транзакт входит в блок GATE. Если память с именем STORAGE_1 не пуста, транзакт переходит к следующему по порядку блоку. Если память пуста, активный транзакт направляется на метку METKA_EXIT |
TEST G C1,70000 | Активный транзакт входит в блок TEST, если значение относительного модельного времени больше 70000. Иначе, транзакт блокируется до тех пор, пока условие не будет выполнено |
TEST G Q$QUEUE_1, Q$QUEUE_2,METKA_EXIT | Активный транзакт входит в блок TEST. Если длина очереди с именем QUEUE_1 больше длины очереди с именем QUEUE_2, транзакт переходит к следующему по порядку блоку. Иначе, транзакт направляется к блоку с меткой METKA_EXIT. |
ASSIGN LOOP_INDEX,5 LOOP_START SEIZE PK ADVANCE 10 RELEASE PK LOOP LOOP_INDEX,LOOP_START | Когда транзакт входит в блок LOOP, его параметр с именем LOOP_INDEX уменьшается на 1. Если результат не нулевой, то транзакт переходит к блоку с меткой LOOP_START. Иначе, транзакт переходит к следующему по порядку блоку |
TRANSFER ,NEW_PLACE | Когда транзакт входит в блок TRANSFER, он немедленно направляется в блок с меткой NEW_PLACE |
TRANSFER .75,,NEW_PLACE | Когда транзакт входит в блок TRANSFER, он переходит к метке NEW_PLACE с вероятностью 0,75. С оставшейся вероятностью он переходит к следующему по порядку блоку. |
TRANSFER BOTH, FIRST_PLACE, SECOND_PLACE | Когда транзакт входит в блок TRANSFER, проверяется блок с меткой FIRST_PLACE. Если транзакт не может войти в него, проверяется блок с меткой SECOND_PLACE. Если транзакту отказана во входе и во второй блок, от остается в блоке TRANSFER до тех пор, пока не сможет войти в один из блоков |
TRANSFER FN,SELECTED_DEVICE | Место назначения активного транзакта выбирается путем вычисления функции SELECTED_DEVICE |
Дата добавления: 2015-01-13; просмотров: 1063;