Блок MARK

В GPSS имеется блок MARK для работы с параметром, проходя через который в параметр заносится значение абсолютного модельного времени. Блок может иметь или не иметь операнд А. Значение операнда определяет номер или имя параметра, в который заносится абсолютное модельное время. Затем, в нужном месте модели обращаются к СЧА М1 или МРn, которое равно разности настоящего модельного времени и времени, запомненного при прохождении последнего MARK. Блок MARKиспользуется,если необходимо определить время обработки транзакта в модели либо время прохождения определённого участка модели.

Приоритет транзакта может быть задан в GENERATE и изменяется в блоке PRYORITY n, где n – номер приоритета (от 0 до 127).

3.7. Применение в моделях копий

и организация синхронизации движения транзактов

В реальных системах при взаимодействии различных элементов модели может возникать необходимость синхронизации процессов во времени. Например, при некотором технологическом швейном процессе могут параллельно обрабатываться разные части, детали одного изделия, а затем собираться в единое по мере готовности. Для организации таких процессов используют блоки SPLIT (создать копию), ASSEMBLE (объединить), MATCH (синхронизировать).

Блок GENERATE является основным средством создания транзактов. Каждый транзакт, вышедший из этого блока определяет собственное семейство, все они различны. Блок SPLIT создаёт заданное число копий транзакта, все они принадлежат тому же семейству, что и транзакт-оригинал. Формат блока:

SPLIT A,[B],[C]

Операнд А определяет число создаваемых копий. Операнд В – номер блока, к которому переходят копии, порождающий транзакт переходит в следующий блок. Операндом С задаётся номер параметра, в котором будут храниться последовательные номера копий, при этом порождающему присваивается номер 1, затем первой копии номер 2 и т. д.

Каждая новая копия становится членом семейства транзактов. Планировщик объединяет транзакты одного семейства в список. К семейству можно применять блоки, GATHER, MATCH.

Блок ASSEMBLEиспользуется для объединения заданного числа транзактов, принадлежащих одному семейству, в один транзакт.

ASSEMBLE A,где А – число объединяемых транзактов.

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

Обратите внимание, что если в блоке SPLIT создалось n копий, то операнд А должен принять значение n + 1 (n копий и оригинал).

Блок GATHERимеет тот же формат, что и ASSEMBLE, отличие состоит в том, что транзакты после сборки не уничтожаются, а все одновременно направляются к следующему блоку.

Блок MATCHпредназначен для синхронизации движения транзактов одного семейства, продвигающихся в модели по параллельным путям. В программе необходимо поместить два сопряжённых блока, каждый в одном из параллельных путей. Например:


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



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