4.2. Обработка одновременных событий
Так как модельное время в GPSS целочисленно, то оказывается
вполне вероятным одновременное наступление двух или более событий,
причем вероятность этого тем больше, чем крупнее выбранная единица
модельного времени. В некоторых случаях одновременное наступление
нескольких событий, или так называемый временной узел, может су-
щественно нарушить логику модели.
Рассмотрим, например, еще раз модель на рис. 14. Здесь может
образоваться временной узел между событиями "поступление транзакта
на вход модели" и "завершение обслуживания в МКУ". Если не-
посредственно перед завершением обслуживания были заняты оба канала
МКУ, то обработка временного узла зависит от последовательности
транзактов, соответствующих событиям, в списке текущих событий.
Предположим, что первым в списке расположен транзакт, освобож-
дающий канал МКУ. Тогда вначале будет обработан этот транзакт, т.е.
событие "завершение обслуживания в МКУ", причем условие "МКУ STO2
не заполнено", проверяемое в блоке GATE, станет истинным. Затем бу-
дет обработан транзакт, поступивший на вход модели, в блок GATE с
именем ENT1, из блока GENERATE или из блока TRANSFER в безусловном
режиме. При этом транзакт будет впущен в блок ENTER, и МКУ в тот же
момент модельного времени снова окажется заполненным. Такая ситуа-
ция при обработке временного узла представляется естественной.
Предположим теперь, что первым в списке текущих событий распо-
ложен транзакт, поступающий на вход модели. Так как условие "МКУ
STO2 не заполнено" ложно, то блок GATE направит этот транзакт в
блок с именем REFUS. Таким образом, в модели будет зафиксирован от-
каз в обслуживании, хотя в этот же момент модельного времени, после
обработки транзакта, освобождающего канал, МКУ станет доступным.
Порядок расположения транзактов, соответствующих рассматривае-
мым событиям, в списке текущих событий случаен, и в среднем в поло-
вине случаев временной узел будет обрабатываться не так, как нужно.
В результате статистика, связанная с отказами, окажется искаженной.
Для правильной обработки временного узла надо обеспечить такой
порядок расположения транзактов в списке текущих событий, чтобы
транзакт, освобождающий МКУ, всегда располагался первым. Этого мож-
но добиться, управляя приоритетами транзактов (рис. 22).
STO2 STORAGE 2
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ENT1 GATE SNF STO2,REFUS
ENTER STO2
PRIORITY 1
ADVANCE 160,FN$EXP
LEAVE STO2
TERMINATE 1
REFUS TRANSFER .1,,OUT
ADVANCE 250,FN$EXP
TRANSFER ,ENT1
OUT TERMINATE 1
Рис. 22
Транзакты, поступающие в модель через блок GENERATE, имеют ну-
левой приоритет. Такой же приоритет имеют транзакты, получившие от-
каз в обслуживании, направленные в блок с именем REFUS и затем пов-
торно поступающие в блок с именем ENT1. Те же транзакты, что посту-
пают на обслуживание, повышают приоритет до 1 в блоке PRIORITY, и
после выхода из блока ADVANCE возвращаются из списка будущих в
список текущих событий, располагаясь в начале списка. Таким обра-
зом, нужный порядок транзактов обеспечивается, и временной узел бу-
дет обработан правильно.
Опасность неверной обработки временных узлов характерна для
моделей со списками пользователя. Рассмотрим, например, еще раз мо-
дель на рис. 18. Здесь также возможен временной узел между события-
ми "приход транзакта" и "завершение обслуживания транзакта".
Пусть первым в списке текущих событий располагается вновь при-
шедший транзакт. Так как устройство с именем SYSTEM занято, то блок
GATE направит этот транзакт в блок LINK, и он будет введен в список
пользователя с именем LINE. Затем будет обработан транзакт, осво-
бождающий устройство. Проходя через блок UNLINK, он выведет тран-
закт с начала списка пользователя и направит его в список текущих
событий, где тот продвинется в блок SEIZE, занимая устройство
SYSTEM.
Если же первым в списке текущих событий располагается тран-
закт, освобождающий устройство, то он выведет первый из ожидающих
транзактов из списка пользователя в список текущих событий, где тот
расположится после вновь пришедшего транзакта. Поэтому первым будет
обработан вновь пришедший транзакт, который пройдет через блок GATE
и займет устройство "без очереди". Транзакт-очередник, который был
выведен из списка пользователя, "застрянет" перед блоком SEIZE и
после очередного освобождения устройства займет его, нарушая, в
свою очередь, логику работы модели.
Проведенный анализ показывает, что для правильной обработки
временного узла необходимо обеспечить такой порядок расположения
транзактов в списке текущих событий, чтобы первым всегда распола-
гался вновь пришедший транзакт. В рассматриваемом случае этого мож-
но добиться, используя блок PRIORITY с операндом BU (рис. 23).
Перед освобождением устройства обслуженный транзакт проходит
через блок PRIORITY, который, оставляя неизменным приоритет тран-
закта PR, переводит его в конец списка текущих событий. При новом
просмотре списка в случае наличия временного узла начинает обраба-
тываться вновь поступивший транзакт. Так как устройство еще занято,
он направляется блоком GATE в список пользователя. При повторной
обработке обслуженного транзакта тот освобождает устройство и выво-
дит очередной транзакт из списка пользователя. Таким образом, пра-
вильная обработка временного узла обеспечивается и в этом случае.
EXP FUNCTION RN1,C24
0,0/.1,.104/.2,.222/.3,.355/.4,.509/.5,.69/.6,.915
.7,1.2/.75,1.38/.8,1.6/.84,1.85/.88,2.12/.9,2.3
.92,2.52/.94,2.81/.95,2.99/.96,3.2/.97,3.5/.98,3.9
.99,4.6/.995,5.3/.998,6.2/.999,7/.9998,8
GENERATE 100,FN$EXP
ASSIGN TSRV,80,EXP
GATE NU SYSTEM,WAIT
SFAC SEIZE SYSTEM
ADVANCE P$TSRV
PRIORITY PR,BU
RELEASE SYSTEM
UNLINK LINE,SFAC,1
TERMINATE 1
WAIT LINK LINE,P$TSRV
Рис. 23
... , как в моделируемой СМО перемещаются заявки, соответствующие транзактам. В начальный момент времени в GPSS-модели нет ни одного транзакта. В процессе моделирования симулятор генерирует транзакты в определенные моменты времени в соответствии с теми логическими потребностями, которые возникают в моделируемой системе. Подобным же образом транзакты покидают модель в определенные моменты времени в ...
... возвращаются на ввод и во всех очередях обслуживаются первыми. Смоделировать работу вычислительного центра в течение 30 ч. Определить необходимую емкость буферов и функцию распределения времени обслуживания заданий. 1.1 Построение концептуальной модели объекта На первом этапе проведения моделирования необходимо построить концептуальную модель (Рис. 1), т.е. концептуальная (содержательная) ...
... в результате входа транзактов в блоки и выполнения блоками своих функций. В данной работе требуется с помощью пакета моделирования систем GPSS/PC исследовать модель заданной СМО. Задание На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин и имеет до ...
... А При входе в блок RELEASE освобождается устройство, номер которого указан в поле А. Устройство становится доступным для других транзактов. При моделировании работы устройств, когда новое требование пытается прервать обслуживание предыдущего, используются блоки PREEMPT (захватить устройство) и RETURN (вернуть устройство ранее прерванному требованию). Блок PREEMPT имеет следующий формат: ...
0 комментариев