Блоки, изменяющие маршрут движения транзактов.

Для изменения маршрута движения транзактов используются блоки, представленные в таблице 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; просмотров: 1054;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.