Общие сведения о языке GPSS

 

Язык моделирования GPSS (General Purpose System Simulation) разработан фирмой IBM в США и с 1962 года входит в стандартное математическое обес­печение машин серии IBM360/370. Язык GPSS получил наиболее широкое рас­пространение по сравнению с другими языками моделирования. Он включен в институтские учебные курсы по моделированию систем у нас в стране иизуча­ется в аналогичных курсах во многих колледжах и университетах США и дру­гих стран. В данном учебном пособии рассматривается одна из версий языка GPSS, реализованная в среде MS DOS для компьютеров класса IBM XT и выше.

Язык GPSS ориентирован на решение задач статистического моделирова­ния на ЭВМ процессов с дискретными событиями. Такими процессами описы­вается прежде всего функционирование систем массового обслуживания произ­вольной структуры и сложности: систем обработки данных, систем транспорта и связи, технологических процессов, предприятий торговли, а также функцио­нирование вычислительных систем и разного рода автоматизированных систем.

Язык основан на схеме транзактов (сообщений). Под транзактом пони­мается формальный объект, который "путешествует" по системе (перемещается от блока к блоку), встречая на пути всевозможные задержки, вызванные занято­стью тех или иных единиц оборудования. Транзакты имеют прямую аналогию с заявками в системах массового обслуживания. В качестве транзакта может вы­ступать программа обработки информации, телефонный вызов, покупатель в магазине, отказ системы при исследовании надежности и т.д. Каждый транзакт обладает совокупностью параметров (до 100), которые называются атрибутами транзакта. В процессе имитации атрибуты могут меняться в соответствии с ло­гикой работы исследуемой системы.

Язык GPSS - язык интерпретируемого типа, он связан с пошаговым вы­полнением операторов, называемых блоками. Совокупности блоков описывают функционирование самой моделируемой системы либо содержат информацию о порядке моделирования (о продвижении транзактов). Каждое продвижение транзакта (сообщения) является событием в модели. Комплекс программ; пла­нирующий выполнение событий, реализующий функционирование блоков мо­делей, регистрирующий статистическую информацию о прохождении транзак­тов, называется симулятором [4]. Симулятор регистрирует время наступления каждого из известных на данный момент событий и выполняет их с нарастаю­щей временной последовательностью. Симулятор обеспечивает отсчет модель­ного времени в принятых единицах, называемых абсолютным условным вре­менем. С каждым сообщением связано относительное условное время, отсчет которого начинается при входе сообщения в моделируемую систему и заканчи­вается при выходе сообщения из системы Основными функциями управляю­щих операторов/блоков языка являются:

     1) создание и уничтожение транзактов,

     2) изменение их атрибутов,

     3) задержка транзактов,

     4) изменение маршрутов транзактов в системе.

  Основные группы объектов языка [5]:

     1) объекты, имитирующие единицы оборудования системы (устройство, память и логические переключатели);

     2) статистические объекты (очередь, таблица),

     3) вычислительные объекты (ячейка, арифметическая и логические пере­менные),

     4) списки,

     5) прочие объекты.

В рассматриваемой версии языка реализованы следующие объекты языка: устройство, память, очередь, таблица, ячейка, арифметическая переменная. Да­дим описание этих объектов.

Устройство имитирует единицу оборудования, которое может одновре­менно обрабатывать только один транзакт. Устройство аналогично обслужи­вающему прибору в СМО. Оно служит для моделирования таких средств обра­ботки элементов потоков, как станки, устройства ЭВМ, каналы связи и т.п. На устройствах можно реализовать самые различные дисциплины обслуживания транзактов, включающие учет требуемого времени обслуживания, значения приоритетов, возможности прерывания и т.д.

Память (накопитель) имитирует единицу оборудования, в которой может обрабатываться (храниться) несколько транзактов одновременно. Память по­зволяет легко моделировать средства обработки с ограниченной емкостью (сто­янки автотранспорта, портовые причалы, устройства памяти ЭВМ, складские помещения, конвейеры и т.п.).

Очередь - объект, связанный со сбором статистики о задержках, возни­кающих на пути прохождения транзакта. Чаще всего очередь помещают перед устройством либо памятью. Следует учитывать, что естественно образующиеся в процессе моделирования очереди транзактов обрабатываются симулятором автоматически, а описываемый объект языка служит лишь для обеспечения вы­вода на печать соответствующих статистических данных.

Таблица обеспечивает накопление в процессе моделирования статистики о каком-либо заданном случайном параметре модели. По окончании прогона модели эта статистика автоматически обрабатывается и выводится на печать, в частности, в виде таблицы относительных частот попадания значений случай­ного параметра (аргумента таблицы) в указанные частотные интервалы. Печа­таются также среднее значение и среднее квадратичное отклонение аргумента.

Ячейки используются для записи, накопления и хранения численных зна­чений различных входных и выходных параметров моделируемой системы. Эти значения могут быть использованы для организации счетчиков числа проходя­щих транзактов, для вывода значений варьируемых параметров модели, для временного хранения значений стандартных числовых атрибутом (СЧА). Зна­чения ячеек всегда выводятся на печать,

Арифметическая переменная позволяет выполнить заданную последова­тельность арифметических операций над любыми СЧА модели для вычисления значения зависимого от них параметра.

Любая программа на GPSS связана с созданием транзактов, проведением их через последовательность блоков и уничтожением транзактов. При этом соз­дание или генерация транзактов основывается на знании закономерностей ин­формационных потоков, циркулирующих в моделируемой системе, а путь про­хождения транзакта через блоки определяется спецификой работы оборудования исследуемой системы.

Вложить в рамки формальной схемы GPSS конкретное смысловое содер­жание, определяемое исследуемой системой - задача непростая: для этого необ­ходимо знать как формализмы языка, так и логику работы моделируемой сис­темы. Тем не менее программирование на GPSS существенно облегчает пользо­вателю процесс моделирования, сокращая и время чистого программирования (по сравнению с универсальными алгоритмическими языками), и время отлад­ки программы.

 

 

Синтаксис языка

Алфавит. Алфавит языка GPSS состоит из латинских букв от А до Z, цифр от 0 до 9 и следующих специальных символов: $, #, *, +, -, /, (,),', точка, запятая и пробел.

Идентификаторы. Они должны содержать от трех до пяти алфавитно-цифровых символов, причем первые три символа должны быть буквами. Иден­тификаторы используются для формирования имен объектов и блоков. Исклю­чение составляют ячейки и атрибуты транзактов, которые могут обозначаться не только идентификаторами, но и просто числами.

Блоки/операторы. Каждый блок языка записывается в отдельной строке и имеет следующую структуру:

[метка] операция [операнды] [комментарии]. Каждое поле отделяется друг от друга пробелами, обязательным является только поле операции, осталь­ные поля могут отсутствовать.

Метка является именем-идентификатором блока. Поле операндов может содержать от 1 до 7 подполей: А, В, С, D. Е, F, G, содержимое которых отделя­ется друг от друга запятой. Для пропуска одного из подполей поля операндов ставится просто запятая: А„С.

Комментарии, кроме поля комментариев, могут быть заданы отдельной строкой: любая строка, начинающаяся с символа "*", тоже будет комментари­ем.   

Стандартные числовые атрибуты. В процессе моделирования язык GPSS автоматически регистрирует и корректирует определенную информацию различных объектов, используемых в модели. Доступ к этой информации осуществляется с помощью СЧА, которые однозначно определяют статус объектов модели. СЧА меняются в процессе имитации, изменить их может как симулятор, так и пользователь. Для указания конкретного объекта, по которому необ­ходимо получить требуемую информацию, за именем СЧА должно следовать числовое или символьное имя этого объекта. Если используется символьное имя, то между СЧА и именем объекта ставится знак $.

В таблице приведены некоторые СЧА основных объектов языка. Здесь каждый СЧА обозначается либо <имя СЧА> i,либо

                                                   < имя СЧА>$ <имя объекта>,

где i обозначает номер объекта.

 

Таблица

 

Объект СЧА Назначение
Блок N$<имя объекта> ws<hmh объекта> Число транзактов, вошедших в блок с указанным именем. Число транзактов, находящихся в ука­занном блоке.
Генераторы случайных чисел Rni Случайное число в диапазоне 0-999. При использовании СЧА в качестве аргумента функции представляются действительными числами в диапазо­не 0.- 0.999999
Транзакт Pi PR Значение параметра Значение приоритета
Память S$<имя объекта> R$<имя объекта> Текущее содержимое памяти Свободный объем памяти
Очередь Q$<имя объекта> Текущая длина очереди
Переменные V$<имя переменной> Значение арифметической переменной
Ячейки Х$<имя ячейки> или Xi Значение ячейки
Функции FN$<имя функции> Значение функции

 

Мнемокоды. В некоторых блоках языка требуется указывать состояние объектов, для этого используются следующие коды:

 

 

Состояние объекта Мнемокод
Память:         Пуста         Не пуста         Заполнена         Не заполнена Устройство:         Свободно          Занято   E NE F NF   NU U

 

 

Блоки языка GPSS


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: