Смекни!
smekni.com

Моделирование на GPSS (стр. 11 из 13)

шедший транзакт. Так как устройство с именем 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

5. КОМАНДЫ GPSS/PC И ТЕХНОЛОГИЯ РАБОТЫ С ПАКЕТОМ

5.1. Загрузка интегрированной среды

Пакет GPSS/PC включает в себя два основных модуля: модуль

GPSSPC.EXE, представляющий интегрированную среду, в которой произ-

водится ввод, редактирование, отладка и выполнение модели, и модуль

GPSSREPT.EXE, предназначенный для получения стандартного отчета

GPSS/PC. Загрузка обоих модулей производится обычным образом из ко-

мандной строки MS DOS или из программы-оболочки Norton Commander.

После загрузки интегрированной среды на экране появляется

"заставка" с названием пакета: начинается так называемый сеанс ра-

боты с GPSS/PC. Затем заставка гасится, и появляется экран, разде-

ленный на две части: большая верхняя часть содержит так называемое

окно данных, меньшая нижняя часть - окно команд. Окно данных в на-

чальный момент пусто, в окне команд в верхней командной строке

высвечен символ "приглашения" >, сигнализирующий о готовности

системы принимать команды.

5.2. Ввод новой модели

Если исходная программа с моделью еще не введена и не записана

на диске, то необходимо ввести ее с клавиатуры. Ввод производится в

командную строку. Сначала вводится номер строки очередного операто-

ра и нажимается клавиша Пробел. Курсор автоматически перемещается к

началу следующего поля - поля имени, и в позиции курсора высвечива-

ется символ L , сигнализирующий о том, что вы находитесь в поле

имени (LABEL - метка). Если оператор имеет имя, необходимо ввести

его и нажать клавишу Пробел, в противном случае - сразу нажать кла-

вишу Пробел. В любом случае курсор переходит к началу следующего

поля - поля операции, о чем сигнализирует символ V (VERB - глагол)

в позиции курсора. Необходимо ввести название оператора и нажать

клавишу Пробел. Очень удобным является то, что название оператора

не обязательно вводить полностью: как только транслятор распознает

оператор по нескольким первым буквам, он после нажатия клавиши Про-

бел сам дополнит его до полного названия.

При синтаксической ошибке в операторе под командной строкой

появляется указатель на место ошибки, причем ошибочный символ не

вводится. Необходимо в этом случае повторить ввод символа.

Аналогичным образом вводятся поля операндов, при этом в пози-

ции курсора высвечивается обозначение текущего поля (A,B, ... ,G).

Для перехода к следующему полю операндов вводится запятая, для пе-

рехода к полю комментариев - Пробел. При переходе курсора в поле

комментариев в позиции курсора высвечивается символ ; , сигнализи-

рующий о возможности начать ввод комментария.

По окончании ввода последнего поля операндов или комментария

следует нажать клавишу Enter, при этом введенный оператор трансли-

руется и отображается в окне данных, а командная строка очищается,

и в ее первой позиции снова появляется символ "приглашения".

По мере ввода новых операторов окно данных заполняется, и по

окончании ввода в нем находится вся исходная программа в последова-

тельности ввода, необязательно совпадающей с последовательностью

нумерации строк. Для отображения в окне данных исходной программы в

последовательности нумерации строк необходимо ввести в командную

строку команду DISPLAY (отобразить). Эта команда, как и все осталь-

ные команды GPSS/PC, вводится без номера строки. С помощью команды

DISPLAY можно также вывести в окно данных отдельную строку, указав

ее номер в поле A команды, или последовательность строк, указав на-

чальный и конечный номера в полях A и B соответственно.

5.3. Редактирование текста модели

Удалить строки из исходной программы можно командой DELETE

(удалить), указав в полях A и B начальный и конечный номера удаляе-

мой последовательности. Для удаления одной строки достаточно ввести

лишь поле A.

При необходимости вставить в текст новый оператор, поместив

его между уже введенными операторами, достаточно ввести его с про-

межуточным номером строки. Вы можете перенумеровать строки, введя

команду RENUMBER (перенумеровать), в поле A которой указывается но-

мер первой строки, а в поле B - шаг перенумерации.

Отредактировать содержимое строки можно с помощью команды EDIT

(редактировать), в поле A которой указывается номер редактируемой

строки. При вводе такой команды в командной строке появляется ре-

дактируемая строка. Подводя курсор к нужным позициям строки, вы мо-

жете внести в нее необходимые изменения. По окончании редактирова-

ния следует нажать клавишу Enter, и отредактированная строка пере-

несется в окно данных, заменив в исходной программе первоначальную

строку с этим номером. Вы можете убедиться в этом, введя команду

DISPLAY 2.

Если редактируемый оператор короткий, а изменений в нем много,

то редактирование удобнее произвести, введя измененный оператор с

тем же номером строки.

5.4. Запись и считывание модели с диска

Если работа с моделью предполагается и по окончании данного

сеанса, то после ввода и редактирования исходную программу имеет

смысл записать на диск. Для этого необходимо ввести команду SAVE

(сохранить), в поле A которой указывается имя файла, в который бу-

дет записана модель. Файл должен иметь расширение .GPS.

Записав модель в файл, вы сможете в следующем сеансе работы с

GPSS/PC не вводить ее заново с клавиатуры, а считать с диска, введя

команду @ спецификация_файла, где спецификация_файла - полное имя

файла, которое вы дали исходной программе в команде SAVE, включаю-

щее расширение .GPS. При выполнении команды @ операторы исходной

программы по мере их считывания из файла транслируются и выводятся

в окно данных.

5.5. Прогон модели и наблюдение за моделированием

После того, как исходная программа модели введена с клавиатуры

или считана с диска и оттранслирована, в памяти ПК создалась теку-

щая модель, и теперь можно выполнить ее прогон. Для этого в команд-

ную строку необходимо ввести управляющий оператор START, указав в

поле A соответствующее начальное значение счетчика завершений.

После нажатия клавиши Enter оператор START переносится в окно дан-

ных, и прогон модели начинается. Об этом сигнализирует сообщение

Simulation in Progress ,

появляющееся в нижней строке командного окна - строке состояния, а

также так называемый индикатор моделирования, мигающий в правой

стороне нижней части окна данных.

Если прогон модели достаточно длинный, то можно наблюдать за

процессом моделирования, открывая те или иные графические окна. Это

производится путем нажатия клавиши Alt одновременно с символьной

клавишей с первой буквой названия окна.

Например, после нажатия клавиш Alt+B в верхней части экрана на

месте окна данных появляется окно блоков (BLOCKS), изображающее ди-

намику продвижения транзактов через блок-схему модели. Рядом с каж-

дым блоком выводится текущее число транзактов в нем, которое обнов-

ляется в процессе моделирования. Нажав клавиши Alt+N, вы можете за-

менить эту информацию на общее число транзактов, прошедших через

каждый блок. Блок, в котором находится активный транзакт, выделен

повышенной яркостью (на цветных мониторах - другим цветом).

Нажав клавиши Alt+F, вы можете наблюдать окно устройств

(FACILITIES), в котором наглядно отображена информация о текущем

состоянии каждого устройства модели: его использовании, занятости,

очереди к нему.

Аналогичную информацию о многоканальных устройствах можно по-