Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Блоки, изменяющие порядок прохождения блоков сообщениями



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

4.3.4.1. Блок TRANSFER

Блок TRANSFER имеет следующий формат:

TRANSFER [< A> ], [< B> ], [< C> ], [< D> ]

Блок TRANSFER является основным средством, позволяющим напра­вить сообщение к любому блоку модели.

Поле А задает режим выбора следующего блока, к которому долж­но перейти сообщение.

Существуют следующие режимы работы блока TRANSFER:

- безусловный (пробел);

- статистический (.);

- BOTH.

Кроме того, операнд А может быть дробным числом, именем, положительным целым числом или СЧА.

Поля В и С задают возможные значения номеров следующих блоков или их положение. Использование значений описано при рассмотрении определенных режимов выбора. Операнды могут быть именем, положи­тельным целым числом или СЧА. Если поле В пусто, ассемблер записы­вает в нем номер блока, следующего за блоком TRANSFER.

Безусловный режим выбора. Если операнд А пропущен, то блок TRANSFER работает в безус­ловном режиме. Входящее в блок TRANSFER сообщение переходит к бло­ку, указанному в поле В. Если сообщение в этот блок войти не может, попытка направить сообщение к какому-либо другому блоку не произво­дится.

Статистический режим выбора. Когда операнд А не является зарезервированным словом, блок TRANSFER работает в статистическом режиме выбора.

Значение аргумента, записанного после точки (.) в поле А, рассматривается как трехзначное число, показывающее (в частях от тысячи), какой процент входящих в блок сообщений следует направить к блоку, указанному в поле С. Остальные сообщения направляются к блоку, указанному в поле В, или к следующему по номеру блоку, если операнд В пропущен. Для каждого сообщения выбирается один из двух возможных вариантов; после того как выбор сделан, второй вариант для этого сообщения не рассматривается.

Пример: BCD TRANSFER.709, BLK1, BLK2

Из общего числа сообщений, входящих в блок BCD, в среднем 0, 709 будут пытаться войти в блок BLK2. Остальные 0, 291 будут пытать­ся войти в блок BLK1.

Режим BOTH. Если в поле А стоит зарезервированное слово ВOTH, блок TRANSFER работает в режиме BOTH.

В этом режиме каждое входящее сообщение сначала пытается пе­рейти к блоку, указанному в поле В. Если это сделать не удается, сообщение пытается перейти к блоку, указанному в поле С. Если сооб­щение не сможет перейти ни к тому, ни к другому блоку, оно остается в блоке TRANSFER и будет повторять в том порядке попытки перехода при каждом просмотре списка текущих событий до тех пор, пока не сможет выйти из блока TRANSFER.

 

4.3.4.2. Блок TEST

Блок TEST имеет следующий формат:

TEST < X> < A>, < B>, [< C> ]

Блок TEST определяет номер следующего блока для вошедшего в него сообщения в зависимости от того, выполняется требуемое условие или нет. Блок управляет потоком сообщений, проверяя выполнение ал­гебраических отношений между значениями СЧА, заданных в полях А и В.

Операнды А и В – сравниваемые величины, которые могут быть именем, любым целым числом или СЧА.

Если в полях А и В заданы СЧА, то они должны быть записаны как СЧАj (например: очередь Q1). Необходимо присвоить им номера в начале программы с помощью оператора EQU.

Во вспомогательном поле операции оператора описания блока TEST < X> – записывается один из шести условных операторов:

- 'L' – меньше. Отношение истинное, если значение аргумента поля А меньше значения аргумента поля В;

- 'LE' – меньше или равно. Отношение истинное, если значение аргумента поля А меньше или равно значению аргумента поля В;

- 'E' – равно. Отношение истинное, если значения обоих аргу­ментов равны;

- 'NE' – не равно. Отношение истинное, если значения аргумен­тов полей А и В не равны;

- 'G' – больше. Отношение истинное, если значение аргумента поля А больше значения аргумента поля В;

- 'GE' – больше или равно. Отношение истинное, если значение аргумента поля А больше или равно значению аргумента поля В.

Если отношение СЧА, заданных в полях А и В, истинно, сообще­ние переходит к следующему блоку. Если отношение ложно, сообщение переходит к блоку, номер которого задан полем С.

C – номер блока для входящего сообщения, если отношение вели­чин, заданных в полях А и В, ложно. Операнд C может быть именем, положительным целым числом или СЧА.

Блок TEST может работать в двух режимах:

1) в режиме безусловного входа. Если в поле С задан номер следующего блока, сообщения никогда не задерживаются на входе блока TEST. Если заданное в блоке TEST отношение истинно, то сообщение пытается перейти к следующему по номеру блоку. Если отношение лож­но, сообщение пытается перейти к блоку, заданному полем С. Выбор следующего блока производится только один раз (в момент входа сооб­щения в блок TEST);

2) в режиме условного входа. Если поле С блока TEST пусто (т.е. не указан альтернативный выход), сообщения не могут войти в блок TEST до тех пор, пока условия не изменятся таким образом, что отношение будет истинно. Если отношение истинно, сообщение входит в блок TEST и пытается перейти к следующему по номеру блоку.

Блоки для обработки сообщений, принадлежащих одному

Семейству

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

Блок TERMINATE является основным средством уничтожения сооб­щений и удаления их из модели. Для удаления сообщений, принадлежа­щих к одному семейству, может быть также использован блок ASSEMBLE.

4.3.5.1. Блок SPLIT

Блок SPLIT имеет следующий формат:

SPLIT < A>, [< B> ], [< C> ]

Блок SPLIT выполняет функцию копирования входящего в него со­общения, которое называется исходным или порождающим.

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

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

В поле С может быть задан номер параметра, используемого для присвоения копиям последовательных номеров. Операнд С может быть именем, положительным целым, СЧА.

Каждая новая копия становится членом семейства сообщений, по­рожденного одним исходным сообщением, которое было создано блоком GENERATE. Сообщения, принадлежащие к одному семейству, объединяются интерпретатором в список.

4.3.5.2. Блок ASSEMBLE

Блок ASSEMBLE имеет следующий формат:

ASSEMBLE < A>

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

Поле А задает число сообщений, участвующих в сборке. Операнд А может быть именем, положительным целым, СЧА.

4.3.5.3. Блок MATCH

Блок MATCH имеет следующий формат:

MATCH < A>

Блок MATCH используется для синхронизации движения двух сооб­щений, принадлежащих к одному семейству, без удаления этих сообще­ний из модели.

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

Поле А задает имя или номер другого блока MATCH, называемого " сопряженным блоком MATCH". Если такого блока нет, происходит оста­нов по ошибке. Операнд А может быть именем, положительным целым, СЧА.

Допускается использование блока MATCH в качестве сопряженного самому себе.

Стандартным числовым атрибутом, связанным с описываемым опе­ратором является:

МВ< номер блока> – флаг синхронизации. Возвращает 1, если со­общение, находящееся в блоке < номер блока>, принадлежит к тому же семейству, что и текущее.

Списки пользователя

В GPSS/PC имеется тип списков сообщений, названных списками пользователя, которые дают возможность удалять сообщения из списков текущих событий и переводить их во временно неактивное состояние. Впоследствии эти сообщения возвращаются в список текущих событий.

4.3.6.1. Блок LINK

Блок LINK имеет следующий формат записи:

LINK < A>, < B>, [< C> ]

Блок LINK удаляет сообщение из списка текущих событий и поме­щает его в список пользователя.

Поле А задает номер списка пользователя, в который будет по­мещено вошедшее сообщение. Операнд А может быть именем, положительным целым, СЧА.

Поле В задает алгоритм упорядочивания списка пользователя. Операнд В может быть LIFO, FIFO, именем, целым или СЧА.

Допустимые операнды:

- FIFO – вошедшее сообщение помещается в конец списка пользователя;

- LIFO – вошедшее сообщение помещается в начало списка пользователя;

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

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

Если поле С пусто, индикатор, связанный с заданным списком пользователя, устанавливается в единицу. Это приводит к тому, что все входящие сообщения безусловно заносятся в список пользователя, определенный полем А в том порядке, какой задан полем В.

Если поле С не пустое, проверяется индикатор списка пользова­теля. Если индикатор списка установлен в единицу, вошедшее сообще­ние заносится в список пользователя в том порядке, какой задан в поле В. Если индикатор списка установлен в " 0", он переводится в единицу, и вошедшее сообщение переходит к блоку, заданному в поле С.

Пример: LINK HOLD, FIFO

В этом примере вошедшее сообщение помещается в конец списка пользователя с именем HOLD.

Стандартными числовыми атрибутами, связанными с описываемым оператором, являются:

CA< номер списка> – среднее число сообщений в списке пользова­теля с именем < номер списка>;

CC< номер списка> – общее число сообщений в списке пользовате­ля с именем < номер списка>;

CH< номер списка> – текущее число сообщений в списке пользова­теля с именем < номер списка>;

CM< номер списка> – максимальное число сообщений в списке пользователя с именем < номер списка>;

CT< номер списка> – среднее время пребывания сообщения в спис­ке пользователя с именем < номер списка>, которое рассчитывается следующим образом:

4.3.6.2. Блок UNLINK

Блок UNLINK имеет следующий формат записи:

UNLINK [< X> ] < A>, < B>, [< C> ], [< D> ], [< E> ], [< F> ]

Блок UNLINK удаляет сообщения из списка пользователя. Указа­тели отношения, записываемые во вспомогательном поле операции < X>, определяют, какое явное условие следует рассматривать. Если указа­тель отношения не задан, предполагается отношение равенства (Е).

Указатели отношения следующие:

- 'G' – больше. Отношение истинно, если значение параметра, заданного в поле D, больше значения, заданного в поле Е;

- 'GE' – больше или равно. Отношение истинно, если значение параметра, заданного в поле D, больше или равно значению, заданному в поле Е;

- 'L' – меньше. Отношение истинно, если значение параметра, заданного в поле D, меньше значения, заданного в поле Е;

- 'LE' – меньше или равно. Если значение параметра, заданного в поле D, меньше или равно значению, заданному в поле Е, то отноше­ние истинно;

- 'E' – равно. Отношение истинно, если значение параметра, заданного в поле D, равно значению, заданному в поле Е;

- 'NE' – не равно. Отношение истинно, если значение параметра, заданного в поле D, не равно значению, заданному в поле Е.

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

В поле В указывается номер блока, к которому переходят уда­ленные сообщения. Операнд В может быть именем, положительным це­лым, СЧА.

Поле С задает счетчик числа удаленных сообщений. Операнд С может быть " ALL", именем, положительным целым или СЧА. Значение СЧА является числом удаляемых сообщений. Может быть задано " ALL", что означает удаление всех сообщений.

Пример использования блока UNLINK: UNLINK HOLD, REENTRY, 1

Первое сообщение из списка пользователя с именем HOLD поме­щается в блок с именем REENTRY. Оно заносится в список текущих со­бытий за сообщением с таким же приоритетом. Входящее сообщение пе­реходит к следующему блоку.

Стандартными числовыми атрибутами, связанными с описываемым оператором являются те же, что и для LINK.

Устройства

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

4.3.7.1. Блок SEIZE

Блок SEIZE имеет следующий формат:

SEIZE < A>

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

В поле А задается имя занимаемого устройства.

Стандартными числовыми атрибутами, связанными с оператором SEIZE, являются:

F< номер устройства> – возвращает 1, если устройство занято, 0 - если свободно;

FС< номер устройства> – общее число входов в устройство;

FI< номер устройства> – возвращает 1, если устройство обслужи­вает прерывание, 0 в противном случае;

FR< номер устройства> – коэффициент использования устройства, выражается в тысячных долях и возвращает целое число от 0 до 1000;

FT< номер устройства> – среднее время занятости устройства од­ним сообщением;

FV< имя устройства> – возвращает 1, если устройство доступно и 0 – если недоступно.

4.3.7.2. Блок RELEASE

Блок RELEASE имеет следующий формат:

RELEASE < A>

Блок RELEASE предназначен для освобождения устройства тем сообщением, которым оно было занято.

Если сообщение обрабатывается устройством, то с помощью блока RELEASE оно освобождает устройство и переходит к следующему последовательному блоку.

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

Стандартными числовыми атрибутами, связанными с описываемым оператором, являются те же, что и для SEIZE.

Многоканальные устройства

При моделировании систем объекты GPSS/PC типа " многоканаль­ные устройства" используются для имитации работы объектов реальных систем, параллельно обрабатывающих поступающие заявки.

4.3.8.1. Оператор описания многоканального устройства

Оператор описания многоканального устройства имеет следующий формат:

< NAME> STORAGE < A>

Оператор STORAGE определяет емкость многоканального устройст­ва в текущей модели.

Поле метки определяет имя многоканального устройства. Поле может быть именем. Операнд А определяет объем многоканального уст­ройства. Операнд А может быть положительным целым.

Стандартными числовыми атрибутами, связанными с описываемым оператором, являются:

- S< номер многоканального устройства> – текущее содержимое. Возвращает емкость заполненной части устройства;

- SА< номер многоканального устройства> – среднее содержимое. Возвращает целую часть среднего заполнения устройства;

- SС< номер многоканального устройства> – счетчик числа входов в многоканальное устройство;

- SЕ< номер многоканального устройства> – незаполненность уст­ройства. Возвращает 1, если устройство использовалось не полностью, и 0 – в противном случае;

- SF< номер многоканального устройства> – заполненность уст­ройства. Возвращает 1, если устройство используется полностью, 0 – в противном случае;

- SR< номер многоканального устройства> – коэффициент исполь­зования многоканального устройства, выраженный в долях тысячи. Воз­вращает целое в интервале от 0 до 1000;

- SM< номер многоканального устройства> – максимально занятая емкость устройства;

- SТ< номер многоканального устройства> – среднее время пребы­вания сообщения в устройстве;

- SV< номер многоканального устройства> – доступность устройс­тва. Возвращает 1, если устройство доступно, 0 – в противном слу­чае.

Блоки, связанные с описываемым оператором: ENTER, LEAVE.

4.3.8.2. Блок ENTER

Блок ENTER имеет следующий формат записи:

ENTER < A>, [< B> ]

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

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

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

Стандартными числовыми атрибутами, связанными с описываемым оператором, являются те же, что и для STORAGE и:

- R< имя многоканального устройства> – емкость незаполненной части устройства.

4.3.8.3. Блок LEAVE

Блок LEAVE имеет следующий формат:

LEAVE < A>, [< B> ]

Блок LEAVE освобождает определенное число единиц многоканаль­ного устройства.

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

Поле А блока LEAVE определяет номер или имя многоканального устройства. Операнд может быть именем, положительным целым или СЧА.

Поле В - число освобождаемых единиц многоканального устройст­ва. Операнд может быть именем, положительным целым или СЧА. Если это поле пусто, предполагается 1. Число освобождаемых единиц не должно превышать текущее содержимое многоканального устройства.

Стандартные числовые атрибуты, связанные с описываемым опера­тором, те же, что и для ENTER.

4.3.8.4. Блоки GATE SNE, GATE SF, GATE SNF, GATE SE, GATE SV

Блоки GATE имеют следующий формат:

GATE < X> < A>, < B>

Блоки GATE позволяют управлять движением сообщений в модели в соответствии со значением логических операторов, связанных с многоканальным устройством (в поле Х). К этим операторам относятся:

- SNEj – многоканальное устройство j не пусто;

- SEj – многоканальное устройство j пусто;

- SNFj – многоканальное устройство j заполнено;

- SFj – многоканальное устройство j не заполнено;

- SNVj – многоканальное устройство j недоступно;

- SVj – многоканальное устройство j доступно.

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

Поле А определяет имя многоканального устройства, состояние которого проверяется. Операнд А может быть именем, положительным целым числом или СЧА.

Поле В – альтернативный блок, если логический атрибут имеет значение " ложь". Операнд В может быть именем, положительным целым или СЧА. Если поле В определено, то оно должно содержать метку бло­ка, допустимую для текущей модели.

Очереди

В GPSS/PC объекты типа " очередь" вводятся для сбора статисти­ческих данных. Статистика об очередях собирается в моменты входа сообщения в блок QUEUE (вход в очередь) или в блок DEPART (выход из очереди). С объектом " очередь" связаны два типа блоков: QUEUE, DEPART.

 

4.3.9.1. Блок QUEUE

Формат записи блока QUEUE:

QUEUE < A>, [< B> ]

Блок QUEUE увеличивает длину очереди.

В поле А задается номер или имя очереди, к длине которой до­бавляются единицы. Операнд может быть именем, положительным целым или СЧА.

Поле В определяет число единиц, на которое увеличивается те­кущая длина очереди. Если поле В пусто, то прибавляется единица. Операнд может быть именем, положительным целым или СЧА.

Стандартные числовые атрибуты, связанные с описываемым опера­тором, следующие:

- Q – текущая длина очереди;

- QА – средняя длина очереди;

- QС – общее число входов в очередь;

- QМ – максимальная длина очереди;

- QТ – среднее время ожидания в очереди;

- QХ – среднее время ожидания в очереди для сообщений с ненулевым временем задержки;

- QZ – число входов в очередь с нулевым временем задержки.

4.3.9.2. Блок DEPART

Блок DEPART имеет следующий формат:

DEPART < A>, [< B> ]

Блок DEPART служит для уменьшения длины очереди.

В поле А задается номер или имя очереди, длину которой нужно уменьшить. Операнд может быть именем, положительным целым или СЧА.

В поле В задается число единиц, на которое уменьшается длина очереди. Это число не должно превышать текущую длину очереди. Если поле В пусто, длина очереди уменьшается на единицу. Операнд может быть именем, положительным целым или СЧА.


Поделиться:



Последнее изменение этой страницы: 2017-04-13; Просмотров: 474; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.068 с.)
Главная | Случайная страница | Обратная связь