Краткое практическое руководство по GPSS


"Занятие свободных приборов. Блоки SЕIZЕ (ЗАНЯТЬ) и RELEASE (ОСВОБОДИТЬ)"


Предположим, что мы хотим использовать прибор. При этом мы должны выполнить следующие шаги:

  1. Ожидаем своей очереди, если это необходимо. Естественно, что ожидание требует некоторого интервала времени.
  2. Когда подходит наша очередь, занимаем прибор. Событие "занятие прибора" происходит в некоторой точке времени.
  3. Прибор остается в состоянии занятости, пока не закончится обслуживание. Для обслуживания требуется также некоторый интервал времени.
  4. Когда обслуживание заканчивается, мы освобождаем прибор. Событие "освобождение прибора" также происходит в некоторой точке времени.

Подобная последовательность шагов выполняется и при моделировании использования прибора в GPSS. Реализация шагов 2 и 4 в GPSS будет рассмотрена нами сейчас; реализация шага 3 и возможности сбора статистики при выполнении шага 1 будут рассмотрены в следующих параграфах.

В GPSS элементами, которые требуют обслуживания, являются транзакты. Мы знаем, что для транзактов характерно перемещение по модели блок за блоком. Предположим, что в какой-то момент активности транзакт занимает прибор. Для этого транзакт входит (или пытается войти) в соответствующий блок, описывающий этот прибор. Блок должен обладать следующими свойствами:

  • Если прибор уже используют, транзакт не может войти в блок, т. е. ему не разрешается занять прибор в данный момент времени, и он должен ждать в очереди. Такой запрет на вход в блок приводит к тому, что транзакт на время исключается из рассмотрения.
  • Eсли прибор не используют, транзакт может войти в блок. Вход транзакта в блок вызывает выполнение подпрограммы обработки этого блока. Результатом выполнения подпрограммы является изменение статуса прибора из "незанято" в "занято".

Блок, который обладает этими свойствами, является блоком SEIZE (ЗАНЯТЬ). Этот блок вместе с операндом А показан на рис. 5.1.


Рис. 5.1.

Блок SEIZE (ЗАНЯТЬ) и его операнд А:
ОперандЗначениеЗначение или результат по умолчанию
АИмя (символическое или числовое) занимаемого прибораОшибка

Вход транзакта в блок SEIZЕ моделирует занятие прибора, вход того же транзакта в другой блок моделирует освобождение прибора.



Назначением этого другого блока является изменение состояния ранее занятого прибора с "занято" в "незанято". Этим блоком является блок RELЕАSЕ (ОСВОБОДИТЬ), который с операндом А показан на рис. 5.2.

Рис. 5.2. Блок RELEASE (ОСВОБОДИТЬ) и его операнд А:
ОперандЗначениеЗначение или результат по умолчанию
АИмя (символическое или числовое) освобождаемого прибораОшибка
Блок RELЕАSЕ никогда не запрещает вход транзакта. В то же время было бы не логично пытаться освободить свободный прибор. Если делается такая попытка, то интерпретатор GPSS печатает сообщение об ошибке и прекращает выполнение моделирования (в приложении С дан полный список сообщений об ошибках системы GPSS/360). Подобным же образом, если транзакт пытается освободить прибор, занятый другим транзактом, печатается сообщение об ошибке и прекращается моделирование. При моделировании нет необходимости определять соответствующий прибор для интерпретатора GPSS перед тем, как использовать блок SEIZЕ. Тот факт, что блок SEIZЕ используется, вызывает установление факта существования данного прибора. Здесь можно напомнить, что когда мы обсуждали вопрос появления транзакта, ничего не было сказано о необходимости указания интерпретатору на его существование до тех пор, пока транзакт не входил в модель. Короче говоря, интерпретатор автоматически обеспечивает возникновение транзактов и приборов.
Главная Содержание главы 1


Содержание раздела