Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GPSS_2003.doc
Скачиваний:
36
Добавлен:
13.11.2019
Размер:
13.2 Mб
Скачать

4.22. Управление процессом моделирования в системе gpss

В данной главе рассматриваются общие принципы управления моделированием в GPSS. Разные трансляторы по-разному могут реа­лизовывать эти принципы.

В системе GPSS интерпретатор (программа управления мо­делированием (ПУМ)) поддерживает сложные структуры организа­ции списков (рис. 4.14). C целью уменьшения затрат компьютерного времени на просмотр списков система GPSS ведет два основных спи­ска событий. Первым является список текущих событии (CTC), куда входят все события, запланированные на текущий момент модель­ного времени независимо от того, условные они или безусловные. Программа управления моделированием просматривает в первую очередь этот список и пытается переместить по модели те транзакты, для которых выполнены условия. Если в этом списке таких транзактов нет, то ПУМ обращается к другому списку – списку будущих со­бытий (СБС). Она переносит все события, которые запланированы на ближайший момент модельного времени, из этого списка в CTC и повторяет его просмотр. Такой перенос осуществляется также в слу­чае совпадения текущего времени моделирования со временем перво­го события в списке будущих событий.

В CTC транзакты размещены в порядке уменьшения приоритета (то есть транзакты c более высоким приоритетом размещены ближе к началу списка). Транзакты c одинаковыми приоритетами размещаются в соответствии c последовательностью поступления в список. Ка­ждый транзакт в CTC может находиться или в активном состоянии (то есть просматриваться ПУМ в данный момент модельного време­ни), или в состоянии задержки.

В начальный момент (при выполнении оператора управления START, который начинает фазу интерпретации GPSS-модели) ПУМ обращается ко всем блокам GENERATE модели. Каждый из этих блоков планирует момент появления транзактов и заносит их в СБС, после чего ПУМ обращается к CTC. Так как в этом списке пока что отсутствуют транзакты, то ПУМ просматривает СБС и выбирает из него все транзакты, запланированные на ближайший момент времени и переносит их в CTC, после чего пытается продвинуть первый тран­закт этого списка по блокам модели. Если перемещение транзакта было задержано по какой-либо причине, не связанной c блоком AD­VANCE, то он остается в CTC и ПУМ пробует перемещать такой транзакт из этого списка далее по блокам. Если транзакт вошел в блок ADVANCE, то планируется его выход из этого блока и транзакт переносится в СБС.

Списки текущих и будущих событий можно увидеть на экране дисплея, если выдать команду EVENTS для GPSS/PC или в окне спи­сков для GPSS World.

В организации эффективной процедуры просмотра важен поря­док просмотра транзактов, движение которых заблокировано (напри­мер, ввиду занятости некоторого ресурса). Простейшим решением является пересмотр всех заблокированных транзактов для каждого нового значения модельного времени и выбор тех, для которых сняты условия блокировок. Если моделируемая система перегружена, то этот способ c точки зрения затрат компьютерного времени невыго­ден, так как каждый транзакт пересматривается многократно до того, как выйдет из состояния блокирования.

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

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

Если при обслуживании текущего активного транзакта про­изошло изменение состояния ресурса, пересмотр начинается сначала, и опять обслуживаются все транзакты из CTC, которые находятся в активном состоянии. Если изменение списков ресурсов не произош­ло, ПУМ опять обращается к CTC и проверяет, не остались ли в нем транзакты, которые необходимо обработать.

Список блокировок – это список транзактов, которые ожидают) изменения состояния ресурса. Существует шесть видов таких спи­сков, связанных c устройствами; семь видов, связанных c МКУ, и два вида, связанных c логическими ключами. C устройствами используются списки для занятых и незанятых, доступных и недоступных уст­ройств и устройств, работающих без прерываний и c прерываниями. C МКУ используются списки для заполненного, незаполненного, пустого, непустого, доступного, недоступного МКУ и транзактов, ко­торые могут войти в МКУ. C логическими ключами связаны списки для включенных и выключенных ключей.

Кроме двух основных списков СТС и СБС существует список прерывании (СПР), содержащий прерванные во время обслуживания транзакты. А также транзакты, вызвавшие прерывание. Список прерываний используется для организации обслуживания одноканальных устройств по абсолютным приоритетам. Это дает возможность организовать приоритетные дисциплины обслуживания транзактов в устройствах.

Список синхронизации (CC) содержит транзакты. которые на данный момент времени сравниваются. Этот список работает c транзактами, полученными c помощью блока SPLIT, который создает транзакты-копии, принадлежащие одному семейству или ансамблю. Синхронизацию движения транзактов одного семейства выполняют следующие блоки: MATCH (синхронизирует движение транзактов c другим блоком), ASSEMBLE (собирает все транзакты-копии и выда­ет один начальный транзакт), GATHER (собирает заданное количе­ство транзактов и задерживает копии до тех пор, пока не соберется необходимое количество копий транзактов). Блок SPLIT можно ис­пользовать многократно.

Остановленные процессы находятся в СБС, CC и списках бло­кировок.

Список пользователя (СП) содержит транзакты, выведенные пользователем из CTC c помощью блока LINK и помещенные в СП как временно неактивные (переведенные пользователем в пассивное состояние). При работе ПУМ они ей недоступны до тех пор, пока не будут возвращены пользователем в CTC c помощью блока UNLINK.

Рис. 4.14

Моделирование заканчивается тогда, когда счетчик завершения, инициализированный оператором управления START, будет сброшен в ноль или когда в CTC и СБС не будет ни одного транзакта.

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