Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по КМ.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
812 Кб
Скачать
☆

4.7. Модельное время

Работа реальных систем протекает во времени, для отображения которого в GPSS-модели используется таймер модельного времени. Изменение модельного времени происходит путем его продвижения до ближайшего события, связанного с изменением состояния моделируемой системы. При моделировании СМО и СеМО такими событиями являются:

- поступление заявок в систему;

- завершение обслуживания заявок в узле СеМО (обслуживающем приборе).

Таким образом, моделирование заключается в определении ближайшего момента наступления каждого события.

Таймер модельного времени корректируется автоматически в соответствии с логикой, предписанной моделью.

Таймер GPSS World может принимать любые значения. Единица времени (секунды, минуты, часы или их доли) для таймера задается разработчиком модели. Так как единица времени не сообщается транслятору, то все данные, связанные со временем, должны быть выражены разработчиком через эту выбранную единицу.

Рассмотрим более подробно механизм изменения таймера модель­ного времени и логику процесса моделирования на примере моделирова­ния системы массового обслуживания с неоднородным потоком заявок. Для формирования неоднородного потока заявок GPSS-модель будет содержать несколько операторов GENERATE по числу классов заявок.

В начале моделирования значение таймера модельного времени устанавливается в 0. Для всех классов заявок, поступающих в моделируе­мую систему, в каждом из блоков GENERATE определяется по одному ближайшему моменту появления транзакта, что соответствует моменту поступления очередной заявки данного класса. Очевидно, что число таких моментов будет равно количеству классов заявок. Среди всех этих моментов определяется момент с наименьшим значением, то есть момент, соответствующий ближайшему событию, и значение таймера модельного времени устанавливается равным значению (продвигается до) этого момента. Такое изменение значения таймера модельного времени приводит к тому, что соответствующий транзакт с моментом поступления, равным значению таймера, начинает движение в модели от блока GENERATE к следующему по порядку блоку. Движение транзакта в модели продолжается до тех пор, пока он не попадет в блок, функцией которого является задержка на некоторое заданное время, или в блок, который "отказывается" принять его до тех пор, пока в модели не изменятся некоторые условия. В последнем случае транзакт остаётся в предыдущем блоке. Если транзакт входит в блок, функцией которого является удаление транзакта из модели, то этот транзакт уничтожается.

Если в модели имеется ещё транзакт с таким же моментом формирования, то начинается его продвижение, причем значение таймера модельного времени не изменяется. Изменение таймера модельного времени происходит только в том случае, если в модели больше нет ни одного транзакта с таким же моментом формирования.

4.8. Списки

Продвижение транзактов в GPSS-модели реализуется с помощью так называемых списков или цепей (Chain).

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

Такими списками в GPSS-модели являются:

- список текущих событий (СТС) - содержит транзакты, которые могут продвигаться в модели в текущий момент модельного времени;

- список будущих событий (СБС) - содержит транзакты, ожидаю­щие наступления более позднего момента модельного времени;

- списки повторных попыток (СПП) - содержат транзакты, не удовлетворяющие условиям входа в блок, причем каждый объект GPSS-модели имеет свой СПП;

- списки прибора (одноканального устройства), включающие:

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

- список прерываний, в котором находятся транзакты, вытеснен­ные из данного устройства, то есть обслуживание которых было прервано более высокоприоритетным транзактом;

- список задержки, в котором находятся транзакты, ожидающие занятия устройства;

- список повторных попыток;

- списки памяти (многоканального устройства), включающие:

- список задержки,

- список повторных попыток;

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

В любой модели всегда формируется один список текущих и один список будущих событий. Остальные списки формируются по мере необходимости.

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

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

Каждый транзакт может иметь множество параметров, называемых атрибутами транзакта, которые сопровождают его в течение «жизни» в модели. К ним, в частности, относятся:

- параметры, закрепляемые пользователем за каждым транзактом, число которых не ограничено; идентификатором параметра может служить его номер (целое положительное число) или имя; параметры транзакта должны быть определены, до того как они будут востребованы;

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

- время входа транзакта в систему - значение абсолютного времени в момент первого входа транзакта в модель или в блок MARK без операнда А;

- текущий блок - номер блока, в котором находится транзакт;

- следующий блок - номер следующего блока, в который должен перейти данный транзакт;

- список, в котором находится транзакт в некоторый момент времени:

ACTIVE - транзакт находится в СТС и является активным;

SUSPENDED - транзакт находится в СБС   или в СТС и

ожидает возможности стать активным;

PASSIVE - транзакт находится в состоянии ожидания: в списке пользователя, списке задержки или списке отложенных прерываний;

PREEMPTED - обслуживание транзакта в устройстве прерва­но, и он находится в списке прерываний;

TERMINATED - транзакт удаляется из модели и больше не участвует в процессе моделирования.