Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лабораторных работ 2003.docx
Скачиваний:
77
Добавлен:
12.03.2015
Размер:
8.67 Mб
Скачать
      1. Блоки, изменяющие маршрут движения транзактов.

Для изменения маршрута движения транзактов используются блоки, представленные в таблице 1 .13.

Таблица 1.13 Операторы, изменяющие маршрут движения транзактов

Блок

Описание

1

GATEOA,B

Изменение движения маршрута в зависимости от состояния некоторого объекта

2

TESTOA,B,C

Сравнение значения и управление местом назначения активного транзакта, основываясь на результате сравнения

3

LOOPA,B

Изменение параметра и управление местом назначения активного транзакта, основываясь на результат

4

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 Примеры использования операторов операционной категории

Пример использования оператора

Комментарии

GATESNF STORAGE_1

Активный транзакт входит в блок GATE, если память с именемSTORAGE_1 не заполнена. Если память заполнена, активный транзакт блокируется до тех пор, пока 1 или более элементов памяти не станут доступными

GATE SNE STORAGE_1,METKA_EXIT

Активный транзакт входит в блок GATE. Если память с именемSTORAGE_1 не пуста, транзакт переходит к следующему по порядку блоку. Если память пуста, активный транзакт направляется на меткуMETKA_EXIT

TESTG 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