Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Изменение маршрутов сообщений. Transfer ,next. Transfer. 5,,otd2. Otd1 seize prod1. Изменение маршрутов сообщений




Изменение маршрутов сообщений

Оператор TRANSFER (Передать) позволяет осуществлять безусловные и статистические переходы. Тип перехода определяется в операнде , направление перехода — в операндах  и .

В режиме безусловного перехода операнд  в операторе пуст. Все транзакты переходят к оператору, указанному в поле . Например:

TRANSFER, NEXT

Если оператор, к которому направляется транзакт, в текущий момент системного времени не может его принять (например, оператор SEIZE ), то транзакт остается в операторе TRANSFER и повторяет попытку перехода при каждом пересчете системного времени симулятором.

Если в поле  оператора TRANSFER записана десятичная дробь, начинающаяся точкой, то оператор работает в режиме статистического перехода. Здесь десятичная дробь определяет вероятность перехода транзакта к оператору, имя которого указывается в поле . При этом поле  пустое. С вероятностью (1-< A> ) транзакт переходит к оператору, следующему за оператором TRANSFER.

Если оба оператора заняты, то транзакт остается в операторе TRANSFER и повторяет попытку перехода к выбранному ранее оператору при каждом изменении системного времени.

Например, выбор покупателями в магазине одного из двух отделов, если известно, что половина покупателей направляется в 1-й отдел, а вторая половина — во 2-й отдел:

TRANSFER         . 5,, OTD2

OTD1 SEIZE        PROD1

          .

OTD2 SEIZE        PROD2

Условный переход. Для организации условного перехода используется оператор IF, операнд  которого указывает условие перехода транзактов, а в поле  указывается имя оператора, куда направляются транзакты, если условие перехода выполняется.

При описании условия используются операции отношения: >, <, =, а также различные СЧА объектов, числовые константы, мнемокоды.

Например, при входе транзакта в оператор

IF KASS=NU, KAS1 - проверяется условие: свободно ли устройство с именем KASS.

Если устройство свободно, то транзакт направляется к оператору с именем KAS1, в противном случае транзакт направляется к оператору, стоящему непосредственно за оператором IF.

Условная задержка транзакта. B том случае, если необходимо задержать транзакт перед каким-либо оператором до выполнения определенного условия, используется оператор WAITIF. В поле A этого оператора задается условие задержки, и транзакт остается в данном операторе до тех пор, пока это условие истинно; как только условие становится ложным, транзакт продолжает свой путь.

Например, транзакт будет задержан до тех пор, пока память с именем STR будет полной

WAITIF STR=F

Пример 4.

В магазине находится два отдела: продовольственный и промтоварный. Около 30-ти процентов приходящих в магазин покупателей направляются в промтоварный отдел, остальные ‑ в продовольственный. Причем, если очередь в промтоварном отделе больше двух человек, а в продовольственном ‑ больше пяти, то покупатели уходят из магазина, не дожидаясь обслуживания. Время прихода и обслуживания покупателей распределено экспоненциально. Среднее значение времени прихода равно - 20 сек., времени обслуживания в продовольственном отделе - 30 сек, в промтоварном - 35 сек.

Модель, имитирующая работу магазина за 8 ч:

GENERATE 20, FN$XPDIS             приход покупателей
TRANSFER. 3,, PROM                    выбор покупателем отдела

* работа продовольственного отдела

PROD IF Q$LIN1> 5, BYBY           если очередь больше 5-ти чел. , то покупатель уходит
QUEUE LIN1                                   поставить в очередь в продовольственный отдел
SEIZE PROD1                              занять продавца
DEPART LIN1                                 покинуть очередь в продовольственный отдел
ADVANCE 30, FN$XPDIS               обслуживание покупателя
RELEASE PROD1                            освободить продавца
TERMINATE                                     уход покупателя

* работа промтоварного отдела

PROM IF Q$LIN1> 2, BYBY если очередь больше 2-х чел. , то покупатель уходит
QUEUE LIN2 поставить в очередь в промышленный отдел
SEIZE PROD2 занять продавца
DEPART LIN2 покинуть очередь в промышленный отдел
ADVANCE 35, FN$XPDIS обслуживание покупателя
RELEASE PROD2 освободить продавца
BYBY TERMINATE  

* таймер

GENERATE 28800 работа магазина в течении 8 часов (28800 сек. )
TERMINATE 1  
START 1  
END  
Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...