Студентам > Курсовые > Моделирование систем и сетей связи на GPSS
Моделирование систем и сетей связи на GPSSСтраница: 11/12
заявки, разыгрываемый с помощью функции CLASS. В
следующем блоке
PRIORITY с помощью переменной PRIOT определяется
приоритет транзак-
тов, первоначально равный 0 (отсутствует поле E в блоке
GENERATE).
Далее каждый транзакт "отмечается" в
блоках QUEUE в двух оче-
редях. Очередь с именем LINE является общей для
транзактов всех
классов. Входя в следующий блок QUEUE, транзакт
отмечается в очере-
ди с номером 1, 2 или 3 в зависимости от класса заявки,
записанного
в параметре TYPE. Аналогичным образом фиксируется уход
из очередей
в блоках DEPART. Таким образом, в модели создается
четыре объекта
типа "очередь": одна очередь с именем LINE и
три с номерами 1, 2 и
3. При этом три последние очереди создаются одной
парой блоков
QUEUE-DEPART! В этом и заключается эффект косвенной
адресации.
Как уже отмечалось ранее, каждому имени объекта
симулятор сам
ставит в соответствие некоторый номер. При ссылках на
объекты одно-
го и того же типа одновременно по именам и номерам, как
это имеет
место в рассматриваемом примере, существует опасность
параллельной
адресации к одному и тому же объекту вместо двух разных
или, наобо-
рот, к двум разным объектам вместо одного. Так, в
рассматриваемой
модели мы, вообще говоря, не знаем, какой именно номер
поставит си-
мулятор в соответствие имени очереди LINE. Если этот
номер будет от
1 до 3, то это приведет к ошибке, так как в модели
окажется не че-
тыре очереди, а три, причем в одну из них будет
заноситься информа-
ция как обо всех транзактах, так и дополнительно о
транзактах одно-
го из трех классов. Как избежать такой ситуации?
К счастью, в большинстве случаев об этом можно не
заботиться,
поскольку симулятор ставит в соответствие именам объектов
достаточ-
но большие номера, начиная с 10000. При
необходимости же можно
воспользоваться оператором EQU, о котором уже
говорилось выше, и
самостоятельно сопоставить имени объекта желаемый номер.
Например,
- 43 -
в рассматриваемой модели для того, чтобы очередь с именем
LINE име-
ла номер 4, достаточно записать оператор:
LINE EQU 4
4.2. Обработка одновременных событий
Так как модельное время в GPSS целочисленно, то
оказывается
вполне вероятным одновременное наступление двух или
более событий,
причем вероятность этого тем больше, чем крупнее
выбранная единица
модельного времени. В некоторых случаях одновременное
наступление
нескольких событий, или так называемый 1временной
узел 0, может су-
щественно нарушить логику модели.
Рассмотрим, например, еще раз модель на рис. 14.
Здесь может
образоваться временной узел между событиями
"поступление транзакта
на вход модели" и "завершение обслуживания
в МКУ". Если не-
посредственно перед завершением обслуживания были заняты
оба канала
МКУ, то обработка временного узла зависит от
последовательности
транзактов, соответствующих событиям, в списке текущих
событий.
Предположим, что первым в списке расположен
транзакт, освобож-
дающий канал МКУ. Тогда вначале будет обработан этот
транзакт, т.е.
событие "завершение обслуживания в МКУ",
причем условие "МКУ STO2
не заполнено", проверяемое в блоке GATE, станет
истинным. Затем бу-
дет обработан транзакт, поступивший на вход модели, в
блок GATE с
именем ENT1, из блока GENERATE или из блока TRANSFER в
безусловном
режиме. При этом транзакт будет впущен в блок ENTER, и
МКУ в тот же
момент модельного времени снова окажется заполненным.
Такая ситуа-
ция при обработке временного узла представляется
естественной.
Предположим теперь, что первым в списке текущих
событий распо-
ложен транзакт, поступающий на вход модели. Так как
условие "МКУ
STO2 не заполнено" ложно, то блок GATE направит
этот транзакт в
блок с именем REFUS. Таким образом, в модели будет
зафиксирован от-
каз в обслуживании, хотя в этот же момент модельного
времени, после
обработки транзакта, освобождающего канал, МКУ станет
доступным.
Порядок расположения транзактов, соответствующих
рассматривае-
мым событиям, в списке текущих событий случаен, и в
среднем в поло-
вине случаев временной узел будет обрабатываться не так,
как нужно.
В результате статистика, связанная с отказами, окажется
искаженной.
Для правильной обработки временного узла надо
обеспечить такой
порядок расположения транзактов в списке текущих
событий, чтобы
транзакт, освобождающий МКУ, всегда располагался первым.
Этого мож-
но добиться, управляя приоритетами транзактов (рис. 22).
- 44 -
Ш1
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
Ш1.5
Рис. 22
Транзакты, поступающие в модель через блок GENERATE,
имеют ну-
левой приоритет. Такой же приоритет имеют транзакты,
получившие от-
каз в обслуживании, направленные в блок с именем REFUS и
затем пов-
торно поступающие в блок с именем ENT1. Те же транзакты,
что посту-
пают на обслуживание, повышают приоритет до 1 в блоке
PRIORITY, и
после выхода из блока ADVANCE возвращаются из списка
будущих в
список текущих событий, располагаясь в начале списка.
Таким обра-
зом, нужный порядок транзактов обеспечивается, и
временной узел бу-
дет обработан правильно.
Опасность неверной обработки временных узлов
характерна для
моделей со списками пользователя. Рассмотрим, например,
еще раз мо-
дель на рис. 18. Здесь также возможен временной узел
между события-
ми "приход транзакта" и "завершение
обслуживания транзакта".
Пусть первым в списке текущих событий располагается
вновь при-
шедший транзакт. Так как устройство с именем SYSTEM
занято, то блок
GATE направит этот транзакт в блок LINK, и он будет
введен в список
пользователя с именем LINE. Затем будет обработан
транзакт, осво-
бождающий устройство. Проходя через блок UNLINK, он
выведет тран-
закт с начала списка пользователя и направит его в
список текущих
событий, где тот продвинется в блок SEIZE, занимая
устройство
SYSTEM.
Если же первым в списке текущих событий
располагается тран-
закт, освобождающий устройство, то он выведет первый из
ожидающих
транзактов из списка пользователя в список текущих
событий, где тот
расположится после вновь пришедшего транзакта. Поэтому
первым будет
- 45 -
обработан вновь пришедший транзакт, который пройдет через
блок GATE
и займет устройство "без очереди".
Транзакт-очередник, который был
выведен из списка пользователя, "застрянет"
перед блоком SEIZE и
после очередного освобождения устройства займет его,
нарушая, в
свою очередь, логику работы модели.
Проведенный анализ показывает, что для правильной
обработки
временного узла необходимо обеспечить такой порядок
расположения
транзактов в списке текущих событий, чтобы первым
всегда распола-
гался вновь пришедший транзакт. В рассматриваемом случае
этого мож-
но добиться, используя блок PRIORITY с операндом BU (рис.
23).
Перед освобождением устройства обслуженный
транзакт проходит
через блок PRIORITY, который, оставляя неизменным
приоритет тран-
закта PR, переводит его в конец списка текущих событий.
При новом
просмотре списка в случае наличия временного узла
начинает обраба-
тываться вновь поступивший транзакт. Так как устройство
еще занято,
он направляется блоком GATE в список пользователя. При
повторной
обработке обслуженного транзакта тот освобождает
устройство и выво-
дит очередной транзакт из списка пользователя. Таким
образом, пра-
вильная обработка временного узла обеспечивается и в этом
случае.
Ш1
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
Ш1.5
Рис. 23
- 46 -
.
5. КОМАНДЫ GPSS/PC И ТЕХНОЛОГИЯ РАБОТЫ С ПАКЕТОМ
5.1. Загрузка интегрированной среды
Пакет GPSS/PC включает в себя два основных
модуля: модуль
GPSSPC.EXE, представляющий интегрированную среду, в
которой произ-
водится ввод, редактирование, отладка и выполнение
модели, и модуль
GPSSREPT.EXE, предназначенный для получения
стандартного отчета
GPSS/PC. Загрузка обоих модулей производится обычным
образом из ко-
мандной строки MS DOS или из программы-оболочки Norton
Commander.
После загрузки интегрированной среды на экране
появляется
"заставка" с названием пакета: начинается так
называемый 1сеанс 0ра-
боты с GPSS/PC. Затем заставка гасится, и появляется
экран, разде-
ленный на две части: большая верхняя часть содержит так
называемое
|