Теrмinate

Транзакты, выходящие из блока GЕNЕRАТЕ, поступают в блок QUEUE. После внесения соответствующих изменений в статистику, собираемую по данной очереди, транзакт входит в блок LINK. Так как в блоке LINK существует альтернативный выход, проверяется состояние индикатора списка СНАIN (имя которого определяется операндом А блока LINK). Если индикатор этого списка установлен в «0», транзакт немедленно устанавливает его в «1» и переходит к альтернативному блоку, то есть в данной модели – к блоку SEIZE. Если индикатор списка установлен в «1», то транзакт, входящий в блок LINK, без дальнейших проверок заносится в СП СНАIN. Так как в операнде В задан алгоритм FIFO, транзакт помещается в конец этого СП.

Отметим, что транзакты, занесенные в СП, не проходят дальнейшей обработки до тех пор, пока они не будут удалены из списка другими транзактами, входящими в блок UNLINK. После удаления из СП транзакт поступает к блоку, указанному в операнде В блока UNLINK.

Когда транзакт входит в блок SЕIZE, проводится корректировка статистики, связанной с заданным в этом блоке устройством. Потом транзакт переходит к блоку DEPART, где корректируется статистика очереди, а потом переходит к блоку ADVANCE, в котором он остается на протяжении времени, определяемом операндами блока ADVANCE.

После выхода из блока ADVANCE транзакт входит в блок RЕLЕАSЕ. Освобождается указанное в блоке устройство и корректируется связанная с ним статистика. После этого транзакт перемещается к блоку UNLINK.

При перемещении транзакта к блоку UNLINK просматривается СП, имя которого задано в операнде А:

1) если СП пуст, то есть СН$СНАIN= 0, то индикатор списка устанавливается в «0» и транзакт переходит к следующему по номеру блоку, то есть к ТЕRМINATE; |

2) если СП не пуст, то есть СН$СНАIN¹ 0, то первый транзакт этого списка удаляется, помещается в СТС и направляется к блоку. указанному в операнде В блока UNLINK (в данной модели это блок SЕIZE, помеченный меткой САN). А транзакт, вошедший в блок UNLINK, перемещается к блоку ТЕRМINATE.

Рассмотренная модель не сложна, но хорошо иллюстрирует несколько важных моментов:

1) в этой системе активными могут быть только те транзакты, которые выходят из блока GЕNЕRАТЕ, или тот транзакт, который в данный момент занимает устройство. Все остальные транзакты находятся в СП СНАIN;

2) так как все задержанные транзакты, то есть транзакты, находящиеся в очереди к устройству РС_1, будут помещены в СП СНАIN, интерпретатор не будет тратить время на изменение индикаторов задержки всех этих транзактов при каждом изменении положения устройства. Экономия времени зависит от длины очереди: чем длиннее очередь, тем больше времени будет сэкономлено благодаря блокам LINK – UNLINK, которые используются для управления очередями к разным объектам;

3) пользователь имеет возможность динамически формировать свои списки независимо от списков задержки, которые поддерживаются системой GPSS;

4) использование блоков LINK – UNLINK дает возможность синхронизировать движение разных транзактов в модели, например, задерживать в списке транзакты до тех пор, пока какой-либо другой транзакт не выведет их из списка с помощью блока UNLINK.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: