Обработка одновременных событий




 

Так как модельное время в 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

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: