Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чтоесть / Мое / Конспект лекций Для студентов специальности 080801. 65 - приклад.doc
Скачиваний:
249
Добавлен:
24.03.2015
Размер:
3.83 Mб
Скачать

7 Testne p1,p2,asn2 ; Повторить, если адресат

; совпадает со входной

; линией абонента

8 LOGIC S *1 ; Установить выходную

; линию абонента занятой

9 TRANSFER BOTH,,BLKD ; Дождаться связи

10 GETL ENTER LNKS ; Установить связь

11 GATELR *2,BUSY ; Проверка занятости

12 LOGIC S *2 ; Установить адресата

; занятым

13 ADVANCE 120,FN$POISS ; Разговор

14 LOGIC R *1 ; Установить входную

; линию абонента ;свободной

15 LOGIC R *2 ; Установить адресата

; свободным

16 LEAVE LNKS ; Освободить связь

17 СКСН TESTG CH$WAIT,0,MTRM ; Есть ли ожидающие

; вызовы?

18 GATELR 1,GETF ; Проверить, свободна ли

; выходная линия?

19 UNLINK WAIT,GETL,1,2,1,GETF ; Установить связь с первым ожидающим вызовом

20 MTRM TERMINATE 1

21 GETF UNLINK WAIT,GETL,1 ; Подключитьпервый

; ожидающий вызов

22 TRANSFER ,MTRM

23 ABND TERMINATE ; Отказаться от вызова

24 BLKD LINK WAIT,P1 ; Ожидать в порядке

; поступления вызовов

25 BUSY LOGIC R *1 ; Освободить линию

26 LEAVE LNKS ; Освободить связь

27 TRANSFER ,CKCH

* ' '

28 LNKS STORAGE 10 ; Количество

; одновременных связей

; между абонентами

29 LINE VARIABLE X$NRLINES#RN1/1000+1 ; Выбор линии

30 FREELN VARIABLE X$NRLINES-2#S$LNKS-CH$WAIT ; Номер свободной линии

* Операторы управления GPSS World

*

31 INITIAL X$NRLINES,50 ; Количество линий

; для связи

START 15,NP ; 15 проходов RESET ; Сброс статистики START 1000 ; Моделирование

; 1000 вызовов

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

GATE X А,|В]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример 4.60

QUEUE LINE

GATE SV LINE1

DEPART LINE

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

Блоки GATE - очень мощный инструмент, но они могут приво­дить к значительным затратам компьютерного времени на тщетные попытки транзактов войти в блок. Чтобы уменьшить частоту бесполезных попыток вхождения в блок, можно с помощью блоков LINK и UNLINK поместить транзакты в СП.

Соседние файлы в папке Мое