logo search
Чтоесть / Мое / Конспект лекций Для студентов специальности 080801

4.24. Блоки управления потоками транзактовLogic,gatelr,gatelSиGate

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

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

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

LOGIC X A

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

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

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

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

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

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

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

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

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

Пример 4.59

Рассмотрим работу телефонной сети, имеющей 50 абонентских линий связи, причем одновременно может быть задействовано не бо­лее 10 связей между абонентами. Каждый абонент может соединиться с остальными, если свободны его входная линия связи и входная ли­ния вызываемого абонента. Из 50 линий для организации связи могут использоваться любые две свободных линии. Необходимо промоде­лировать работу телефонной сети для 1000 вызовов. Интервалы меж­ду вызовами и длительность разговора распределены по экспоненци­альному закону. Предусматривается, что первые 15 вызовов образуют переходной процесс в сети и эти данные не нужно учитывать при мо­делировании. Модель этой системы разработал Джеффри Гордон для GPSS/H. Приведенный текст программы модифицирован для GPSS World.