logo
Чтоесть / Мое / Конспект лекций Для студентов специальности 080801

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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