Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на имитац моделирование.doc
Скачиваний:
6
Добавлен:
25.11.2019
Размер:
1.57 Mб
Скачать

Вопрос 46 Проверка числовых выражений. Блок test.

Сравнение СЧА может быть выполнено c помощью блока TEST (ПРОВЕРИТЬ)

Его формат:

TEST Х A,B|,C|

Таблица 4.43

Операнд

Значение

Результат по умолча­нию

А

СЧА

Ошибка

В

СЧА

Ошибка

С

Имя блока, в который переходит транзакт при условии, что ответ на вопрос, подразумеваемый оператором отношения, отрицатель­ный

При отсутствии опе­ранда С проверку вы­полняют в режиме отказа

X

Вспомогательный оператор, кото­рый представляет собой оператор отношения, использующийся при проверке

Значение оператора отношений:

Вопрос оператора отношения:

G

А больше В?

GE

А больше или равно В?

Е

А равно В?

NE

А не равно В?

LE

А меньше или равно В?

L

А меньше В?

Операнды А и В – имена СЧА, которые сравниваются. Вспомогательный оператор Х указывает способ сравнения этих двух СЧА дpyг c другом.

Пример 4.40

Режим отказа

TEST LE Ql,Q2

Проверяющий транзакт будет задержан в предыдущем блоке до rex пор, пока длина первой очереди не станет меньше или равна длине второй очереди.

Пример 4.41

Режим условного перехода

TEST LE Ql,Q2,ZHVS

Проверяющий транзакт перейдет в следующий по порядку блок, если содержимое первой очереди меньше или равно содержи­мому второй очереди. Если это условие не выполняется, транзакт перейдет в блок c меткой ZHVS.

Вопрос 50 Логические ключи. Блоки управления потоками транзактов: logic, gate lr,gate ls и gate.

Некоторые события в системе могут заблокировать или изме­нить движение транзактов. Например, кассир кинотеатра, идя на обед, ставит табличку «В другое окно», и все следующие клиенты на протяжении обеда обращаются в другую кассу. Для моделирования этих ситуаций введены логические ключи. Транзакт может устанав­ливать эти ключи в положение «Включено» или «Выключено». Через некоторое время состояние ключа может быть использовано другими транзактами для выбора одного из двух возможных путей движения или ожидания момента изменения состояния ключа. Состояние ключа может быть изменено любым транзактом.

Логические ключи (блок LOGIC). Логические ключи исполь­зуются для моделирования объектов, имеющих всего два положения: «Включен» (set или 1 ) и «Выключен» (reset или 0).

Блок LOGIC используется для включения, выключения или ин­вертирования положения ключа. Положение ключа можно проверить любым транзактом в любой части модели.

Блок LOGIC имеет такой формат:

LOGIC Х А

Операнд А – номер логического ключа; он может быть именем, положительным целым, СЧА или CЧA*CЧA.

Когда транзакт входит в блок LOGIC, положение логического ключа, номер которого задан в операнде А, изменяется в зависимости от значения вспомогательного оператора Х следующим образом:

S – логический ключ устанавливается в положение «Включен»;

R – логический ключ устанавливается в положение «Выклю­чен»;

I – логический ключ инвертируется, то есть положение его из­меняется на противоположное.

Логический ключ имеет СЧА LS<номер ключа> или LS$<HMH ключа>, который возвращает значение 1, если ключ в по­ложении «Включен», и 0 – если в положении «Выключен».

Для изменения направления движения сообщений в зависимости от положения логических ключей используются блоки GATE LR и GATE LS

Блоки GATE LR, GATE LS проверяют положение логического ключа. В операнде В задается номер блока, к которому переходит транзакт, если вспомогательный оператор Х имеет значение «ложь». Если значение логического опе­ратора – «истина», транзакт переходит к следующему по порядку блоку. Если операнд В пустой, блок GATE LR (GATE LS) работает в режиме условного вхождения, если заполнен – в режиме безуслов­ного вхождения.

В режиме условного вхождения транзакты могут войти в блок GATE только в том случае, если логический оператор (LRj или LSj) имеет значение «истина». Если значение логического оператора – «ложь», транзакт помещается в список задержки и не обрабатывается интерпретатором до тех пор, пока значение не станет истинным. Единственным исключением являются транзакты, находящиеся в блоке TRANSFER BOTH (или ALL). Когда потом какой-нибудь другой транзакт проходит блок LOGIC, изменяющий состояние соответствующего ключа, и присваивает указанному в блоке GATE логическому оператору значение «истина», все транзакты, находящиеся в списке задержки, активизируются. После этого интерпретатор, про­сматривая CTC, получает возможность переместить один или не­сколько транзактов (включая и те, что находятся в блоке TRANSFER BOTH или ALL) в блок GATE LR (GATE LS), рабо­тающий в режиме условного вхождения.

Блок GATE. Блок GATE управляет потоком транзактов c по­мощью логических операторов. Блок GATE, как и блок TEST, не из­меняет никаких атрибутов транзактов. Он определяет номер следую­щего блока, к которому должен перейти транзакт из блока GATE. Блок GATE может задержать транзакт на входе, если не задан аль­тернативный выход. Блок GATE имеет такой формат:

GATEX A,|B|

Операнд А содержит имя или номер объекта, для которого про­изводится проверка. Операнд А может быть именем, положительным целым числом, СЧА или CЧA*CЧA.

Операнд В содержит номер следующего блока для входящего транзакта, если логический оператор имеет значение «ложь». Опе­ранд В может быть именем, положительным целым числом, СЧА или CЧA*CЧA. Если операнд В определен, то он должен содержать но­мер блока, допустимый для текущей модели.

В дополнительном операторе Х задается один из следующих ло­гических операторов:

1. Логические операторы, связанные c устройствами:

NU – устройство j, заданное в операнде А, свободно;

U – устройство j, заданное в операнде А, занято (в результате выполнения транзактом блока SEIZE или PREEMPT);

NI – устройство j, заданное в операнде А, не прервано;

I – устройство j, заданное в операнде А, обслуживает прерывания;

FV – устройство j, заданное в операнде А, доступно;

FNV – устройство j, заданное в операнде А, не доступно.

2. Логические операторы, связанные c МКУ:

SE – МКУ j, заданное в операнде А, пустое (S[j]=0);

SNE – МКУ j, заданное в операнде А, не пустое (S[j]<>0);

SF – МКУ j, заданное в операнде А, заполнено (R[t]=0);

SNF – МКУ j, заданное в операнде А, не заполнено (R[j]<>0);

SV – МКУ j, заданное в операнде А, доступно;

SNV – МКУ j, заданное в операнде А, не доступно.

3. Логические операторы, связанные c транзактами:

M – в блоке j, заданном в операнде А блока GATE, находится в состоянии синхронизации транзакт, принадлежащий тому же семей­ству, что и транзакт, который находится в блоке GATE или пытается войти в этот блок;

NM – в блоке j, заданном в операнде А блока GATE, в состоя­нии синхронизации нет ни одного транзакта, принадлежащего тому же семейству, что и транзакт, который пытается войти в блок GATE.

4. Логические операторы, связанные c логическими ключами:

LS – логический ключ j, заданный в операнде А, включен;

LR – логический ключ j, заданный в операнде А, выключен.

Режимы условного и безусловного входов в блок GATE. Блок GATE, как и блок TEST, может работать в режимах безусловного и условного вхождения.

В режиме безусловного вхождения транзакт никогда не задер­живается на входе блока GATE. Если заданный логический оператор имеет значение «истина», транзакт пытается перейти к следующему no номеру блоку. Если логический оператор имеет значение «ложь», го транзакты будут пытаться перейти к блоку, номер которого задан в операнде В блока GATE. Выбор следующего блока производится один раз в момент вхождения транзакта в блок GATE.

В режиме условного вхождения, если операнд В блока GATE пустой (альтернативный выход не задан), транзакты не смогут войти в блок GATE до тех пор, пока указанный в этом блоке логический оператор не будет иметь значение «истина». Интерпретатор не про­веряет значение логических операторов, за исключением операторов M и NM. В режиме условного вхождения задержанные транзакты на­ходятся в списках задержки и, таким образом, исключаются из числа транзактов, обрабатываемых интерпретатором до тех пор, пока соот­ветствующий логический оператор не примет значение «истина».

Пример 4.60

В данном случае транзакт помещается в список задержки, если МКУ LINE1 не доступно в тот момент, когда транзакт пытается войти в блок GATE. Когда МКУ становится доступным, все транзакты выводятся из списка и делают попытку войти в МКУ.