Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
imit_Model_lektsii.doc
Скачиваний:
8
Добавлен:
22.09.2019
Размер:
427.01 Кб
Скачать

Лекция № 10 Цепи пользователя

До сих пор мы имели дело с цепями текущих и будущих событий. Эти цепи недоступны пользователю .

Язык GPSS предоставляет программисту для использования третью разновидность цепей  цепь пользователя. Цепь пользователя - такое место, где могут находиться транзакты , присутствующие в модели ,но не находящиеся ни в цепи будущих,ни в цепи текущих событий.Цепей пользователя может быть несколько (количество определяется объемом памяти машины) .

Иногда пользователю известно ,что некоторые транзакты не будут продвигаться в модели, и тогда пользователь может перенести их из цепи текущих событий в цепь пользователя. А поскольку интерпретатор в процессе моделирования просматривает все транзакты, находящиеся в цепи текущих событий, быстрее будет происходить процесс моделирования .

LINK A,B,C позволяет поместить транзакт в цепь пользователя .

A  имя цепи пользователя ,может быть как численным так и символическим.

B  способ включения транзакта в цепь пользователя.Имеет следующие варианты:

FIFO  новый транзакт ставится в конец (обычная очередь);

LIFO  новый транзакт становится в начало очереди;

P  указывает параметр, в соответствии с которым транзакты помещаются в цепь пользователя: в начале находятся транзакты с меньшим значением этого параметра.

C (необязательный параметр) Если С отсутствует, то блок LINK работает в режиме безусловного присоединения,присутствие операнда С задает режим условного присоединения.

Для каждой цепи пользователя вводится индикатор состояния, принимающий состояния Set либо Reset.

Set  транзакт безусловно присоединяется к цепи пользователя

Reset  при поступлении на оператор LINK транзакта индикатор состояния устанавливается в состояние Set и транзакт поступает на блок с меткой‚ указанной в операнде С.

UNLINK A,B,C,D,E,F обеспечивает вывод транзактов из цепи пользователя .

A  имя цепи пользователя ‚из которой извлекаются транзакты.

C  указывается число выводимых транзактов. Здесь может стоять число‚слово ALL (выводятся все

транзакты) или любой числовой атрибут.

B  метка блока‚ на который должны поступить выводимые транзакты.

Выводимые из цепи пользователя транзакты поступают в цепь текущих событий и занимают там место в соответствии со своим приоритетом.

D,E  определяют порядок вывода транзактов

F  имя блока‚ в который поступает транзакт–инициатор‚ то есть тот транзакт который поступил на блок UNLINK‚ если из цепи пользователя не был выведен ни один транзакт. Если был выведен хотя бы один транзакт или операнд F отсутствует‚ то транзакт–инициатор идет на следующий по написанию блок.

При выполнении блока LINK индикатор состояния устанавливается в режим Set. Индикатор состояния может быть выключен только блоком UNLINK, когда в цепи пользователя не останется ни одного транзакта. В начальный момент времени все индикаторы находятся в состоянии Reset.

Пример № 10.1: Смоделировать систему ОП–БП–ЦП. ОП посылает данные на обработку в ЦП. Если ЦП занят, то данные поступают в БП.

GENERATE

15,5

QUEUE

A

* 1-й транзакт‚ пройдя блок LINK‚ установит индикатор состояния

* из Reset в Set и поступит на устройство. Последующие транзакты‚

* если 1-й транзакт ещё не прошел блок UNLINK‚ будут поступать

* в цепь пользователя .

LINK

C1,FIFO,M

M

SEIZE

B

DEPART

A

ADVANCE

10,7

RELEASE

B

* При прохождении блока UNLINK, если цепь пользователя

* пуста‚ индикатор состояния установится в состояние Reset .

UNLINK

C1,M

TERMINATE

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]