Классификация блоков GPSS
Классификация блоков GPSS.
У каждого блока имеется два стандартных числовых атрибута:
- Wn – счетчик входов в блок или ожидающий счетчик, который содержит в себе номер текущего транзакта, находящегося в блоке
- Nn – общий счетчик транзактов, поступивших в блок с начального момента моделирования или с момента обнуления.
Оба счетчика меняют свое содержимое автоматически.
- Блоки, осуществляющие модификацию атрибутов транзактов.
Временная задержка ADVANCE
Генерация и уничтожение транзактов GENERATE TERMINATE SPLIT ASSEMBLE
Синхронизация движения нескольких транзактов MATCH GATHER
Изменение параметров транзакции ASSIGN INDEX MARK
Изменение приоритетов PRIORITY
- Блоки, изменяющие последовательность передвижения транзактов, т.е. блоки передачи управления.
TRANSFER, LOOP, TEST, GATE
- Блоки, связывающие с группирующей категорией.
Рекомендуемые материалы
JOIN REMOVE EXEMINE SCAN ALTER
- Блоки, сохраняющие значения для дальнейшего использования.
SAVEVALUE
ASAVEVALUE
- Блоки, организующие использование объектов аппаратной категории.
Устройства:
SEIZE RELEASE (парные команды)
PREEMP RETURN – тоже самое, но с приоритетной обработкой
FAVAIL FUNAVAIL – доступность устройства
Памяти:
ENTER LEAVE
SAVAIL SUNAVAIL
Ключи:
LOGIC
- Блоки, обеспечивающие получение статистической информации.
QUEUE DEPART
TABULATE TABLE – статистические таблицы
- Специальные блоки.
HELP TRACE UNTRACE PRINT и еще куча - Блоки для организации цепей.
LINK UNLINK
- Вспомогательные блоки.
REPORT – создание стандартного отчета
LOAD SAVE и т.д.
Каждый блок определяется с помощью отдельной команды.
В общем случае: сначала идет нумерация (как в Basic’е), затем обязательно поле метки, затем поле операции, поле операндов, затем, если необходимо, комментарий (через ; - точку с запятой). Т.е.:
<Нумерация><Оператор><Метка><Операнды><Комментарии>
Управление процессом моделирования.
В системе GPSS интерпретатор (программа управления моделированием) поддерживает сложные структуры организации списков:
С целью сокращения затрат времени при просмотре списков система GPSS ведет 2 основных списка событий.
1. Список текущих событий. СТС, куда входят все события, запланированные на момент текущего времени не зависимо от того условные они или безусловные. Программа управления моделированием просматривает в первую очередь этот список и пытается переместить по модели те транзакты, для которых выполнены условия. Если в этом списке таких транзактов нет, то интерпретатор обращается к другому списку СПС перенося все события, которые запланированы на ближайший момент времени (время только модальное) из списка СПС и повторяет его просмотр. Такой перенос определяется так же в случае совпадения текущего времени моделирования со временем первого события в списке будущего события. В СПС транзакты размещены в порядке уменьшения приоритета. Транзакты с одинаковыми приоритетами размещаются в соответствии с последовательностью поступления в список. Каждый транзакт в списке может находиться или в активном состоянии и рассматривается интерпретатором в данный момент времени или в состоянии задержки.
В начальный момент (при выполнении оператора управляющего START, который начинает фазу интерпретации модели) управляющая программа обращается ко всем блокам GENEREATE модели. Каждый из этих блоков планирует момент появления транзактов и заносит их в СБС (список будущих событий). После чего управляющая программа обращается к списку текущих событий (СТС) и выбирает из него все транзакты запланированные на ближайшие моменты времени и переносит их СТС. После чего пытается продвинуть первый транзакт этого списка по блокам модели. Если перемещение транзакта было задержано по какой либо причине, не связанной с блоком ADVANCE, то он остается в СТС и управляющая программа пробует перемещать этот транзакт далее по блокам. Если же транзакт вошел в блок ADVANCE, то планируется его выход из этого блока и этот транзакт переносится в СБС.
СТС и СБС можно просмотреть, если использовать команду EVENTS или же в окне списков. Для эффективной процедуры просмотра важен порядок транзактов, движение которых заблокировано. Движение транзактов может быть заблокировано т.к. ожидают какие-нибудь ресурсы. Простейшим решением является пересмотр всех ожидающих транзактов для каждого нового модельного значения времени и выбор тех, у которых снято условие блокировки. Если исследуемая система перегружена, то данный способ с точки зрения затрат компьютерного времени не подходит, т.к. каждый транзакт просматривается многократно до того как выйдет из состояния блокировки. Если причина перевода транзакта в состояние блокирования – это состояние определенного ресурса системы, то более лучшим является способ обработки, по которому заблокированный по этой причине транзакты вообще не просматриваются до тех пор, пока не изменится состояние ресурса. Реализация такого способа предполагает регистрацию для каждой единицы ресурсов транзактов, движение которых заблокировано ввиду состояния именно этого ресурса. Если транзакты находятся в активном состоянии, то процедура просмотра пытается переместить их к следующим блокам. Если же перемещение таких транзактов блокируется какими-либо ресурсами, то вхождение транзакта в блок невозможно и он переводится в состояние задержки. Такие транзакты не просматриваются и размещаются в списке задержек. Если при просмотре текущего активного транзакта произошло изменение ресурса, то просмотр начинается с начала. И опять обслуживаются все транзакты из СТС, которые находятся в активном состоянии.
Список блокировок – это список транзактов, которые ожидают изменения состояния ресурса. Существует 6 видов связанных с устройствами, 7 видов связанных с многоканальными устройствами и 2 вида связанных с ключами.
С устройствами используются списки для занятых и незанятых, доступных и недоступных устройств и устройств работающих без прерывания и с прерыванием.
С многоканальными устройствами используются списки для заполненного, незаполненного, пустого, непустого, доступного и недоступного устройства и транзактов, которые могут войти в это устройство.
С логическими ключами связаны списки для включенных и выключенных ключей.
Список прерываний содержит прерванные во время обслуживания транзакты, а так же транзакты, вызвавшие прерывания. Этот список используется для организации и обслуживания одноканальных устройств по абсолютным приоритетам, что позволяет организовать приоритетные дисциплины обслуживания транзактов.
Список синхронизации содержит транзакты, которые на данный момент времени сравнивают. Этот список работает с транзактами, полученными с помощью блока SPLIT, который создает транзакты копии, принадлежащие одному семейству или ансамблю.
Синхронизацию транзакта одного семейства выполняют следующие блоки:
- MATCH – синхронизирует движение транзакта с другим блоком
- ASAMBLE – собирает все копии транзактов и выдает один начальный транзакт
- GATHER – собирает заданное количество транзактов и задерживает их до тех пор пока не соберется необходимое количество копий транзакта.
Ещё посмотрите лекцию "7. Английская литература эпохи возрождения" по этой теме.
Блок SPLIT можно использовать многократно.
Остановленные процессы находятся в СБС, списках синхронизации и списках блокировок.
Список пользователя содержит транзакты, выведенные пользователем из СТС с помощью блока LINK и помещенные в список пользователя как временно неактивные. При работе симулятора они недоступны ему до тех пор, пока не будут возращены пользователем в СТС с помощью блока UNLINK.
Моделирование заканчивается тогда когда счетчик завершений (стандартный числовой атрибут), инициализированный оператором START будет равен 1. Или когда в списках СТС и СБС не будет ни одного транзакта.
Блоки, связанные с динамической категорией.
Следующие группы:
- Задержка транзактов по заданному времени.
- Создание и уничтожение транзактов.
- Изменение параметров транзактов (1020 = 4 * 255)
- Создание копий транзактов
- Синхронизация движения транзактов