шедший транзакт. Так как устройство с именем 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), в котором наглядно отображена информация о текущем
состоянии каждого устройства модели: его использовании, занятости,
очереди к нему.
Аналогичную информацию о многоканальных устройствах можно по-