Очереди в GPSS
Транзакты в процессе перемещения по модели могут задерживаться перед некоторыми блоками, если условия входа не выполняются. Примерами таких блоков из рассмотренных выше являются блоки:
• SEIZE (если ранее вошедший в этот блок транзакт не вошел в блок RELEAZE),
• ENTER (если требуемая текущим транзактом емкость памяти больше емкости свободного участка данной памяти),
• GATE и TEST (если в этих блоках не указан альтернативный выход и проверяемое условие не выполняется).
При поступление транзактов на вход задерживающих блоков образуются очереди. Для сбора статистики об очереди в местах задержки транзактов ставят блок входа в очередь QUEUE A, B, где А — имя или номер очереди, В — число элементов, добавляемых в очередь транзактом, по умолчанию В=1. Этот блок сам по себе не создает очереди, а лишь являются средством ее регистрации. При входе в блок QUEUE текущая длина очереди получает приращение на величину, задаваемую полем В. Блок выхода из очереди имеет вид DEPART A, B, где А — имя или номер очереди, B — число элементов, удаляемых из очереди транзактом.
Таким образом, работа очереди в GPSS-модели отображается двумя блоками:
QUEUE A, B
DEPART A, B
Очереди имеют следующие СЧА:
Q$j – текущая длина очереди j;
QM$j – максимальная длина очереди j;
QA$j – средняя длина очереди j;
QC$j – число входов в очередь j;
QZ$j – число входов в очередь с нулевым временем пребывания (транзакт прошел через блок QUEUE, не задерживаясь в очереди);
QT$j – среднее время пребывания в очереди j, включая нулевые входы;
QXSj – среднее время пребывания в очереди j без нулевых входов.