Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Обработка данных / Томашевский_Имитационное моделирование в среде GPSS_2003.doc
Скачиваний:
189
Добавлен:
31.05.2015
Размер:
13.56 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или в окне спи­сков дляGPSSWorld.

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

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

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

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

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

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

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

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

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

Рис. 4.14

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