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


"Ожидание обслуживания: где при каких условиях происходит ожидание транзакта"


В зависимости от значений операндов А и В блока АDVANСЕ может так случиться, что время пребывания транзакта в блоке окажется равным нулю. Например, в блоке АDVANСЕ 12,12 время пребывания в блоке, равное нулю, может возникать в 4% всех случаев. Когда это происходит, вместо задержки транзакта в блоке АDVANСЕ интерпретатор сразу же пытается переместить этот транзакт в следующий блок. Иногда, если это удобно, можно использовать блок АDVANCЕ в качестве "фиктивного" блока. Этого можно добиться, не указывая значения операндов блока. При этом обеспечивается нулевое значение задержки по умолчанию. Позднее мы рассмотрим ситуации, когда это необходимо сделать.

Классический случай использования последовательности SЕIZЕ - АDVANCЕ - RELЕАSЕ показан на рис.7.1.


Рис.7.1. Пример последовательности SЕIZЕ - АDVANСЕ - RЕLЕАSЕ
(ЗАНЯТЬ - ЗАДЕРЖАТЬ - ОСВОБОДИТЬ).

Транзакт, двигающийся по этой цепочке, займет устройство с символическим именем JОЕ, задержится там на 16-4 единицы времени и затем покинет его. После того, как транзакт войдет в блок RЕLЕАSЕ и соответствующая подпрограмма закончится, интерпретатор попытается продвинуть транзакт в следующий блок. Вполне возможно, что транзакт задерживается в блоке после того, как обработана подпрограмма.

Этот тип входа с оставлением транзакта в блоке является вынужденным; транзакт предпочитает двигаться дальше по модели, если этому не противоречат условия моделирования. Сравните эту ситуацию с добровольным пребыванием транзакта в блоке АDVANCЕ.

Ответ на второй вопрос касается дисциплины обслуживания очереди. Дисциплиной обслуживания очереди является правило, в соответствии с которым прибор выбирает на обслуживание следующий транзакт, если таких транзактов больше, чем один. В обычном режиме мы используем дисциплину обслуживания "первым пришел - первым обслужен".Тот, кто ждет дольше других, будет первым. Эту дисциплину обслуживания используют в GPSS по умолчанию.

На самом деле дисциплина обслуживания, используемая по умолчанию в GPSS, является более сложной, чем "первым пришел - первым обслужен"; ее реализуют только для транзактов одного класса приоритетов.

Транзакту присваивается некоторый приоритет.
Уровень приоритета ожидающих транзактов автоматически учитывается интерпретатором при выборе на обслуживание. В примере, следующем далее (пример 2С), показано, как используют эту дисциплину обслуживания. В момент, когда закончится обработка программы RЕLЕАSЕ, следующий транзакт попытается использовать устройство, называемое JОЕ. Из рис. 7.1 вовсе не следует, что блоки АDVANCЕ можно располагать только после блоков SEIZЕ или они должны предшествовать блокам RELЕАSЕ. Блоки АDVANCЕ можно располагать в любых местах моделей. Выбор места зависит от логических условий моделирования.

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