Задача при моделировании реальных систем составить набор блоков, которые заставят транзакты вести себя как реальные (или проектируемые) системы (т е.
Скачать 0.9 Mb.
|
1.1 Операторы - блокиОператоры - блоки формируют логику модели. В GPSS/PC имеется около 50 различных видов блоков, каждый из которых выполняет свою конкретную функцию. За каждым из таких блоков стоит соответствующая подпрограмма транслятора, а операнды каждого блока служат параметрами этой подпрограммы. Блоки выполняют соответствующие операции в модели. В блоках могут происходить события четырех основных типов: ) создание или уничтожение сообщений; ) изменение числового атрибута объекта; ) задержка сообщения на определенный период времени; ) изменение маршрута сообщения в модели. В спецификацию блока GPSS WORLD, кроме имени блока, описывающего основное функциональное назначение блока, входит необязательная метка и операнды. Операнды блоков задают информацию, специфичную для действия данного блока. Число операндов каждого блока зависит от типа блока и не превышает семи. Операнды обозначаются символами А, В, С,D, E, F, G. Одни операнды в некоторых блоках должны быть всегда заданы, другие могут задаваться и не задаваться. В некоторых случаях операнды считаются заданными по умолчанию. Метка (символическое имя) задается не более 5 символами, причем первые три должны быть обязательно алфавитными. Метки ставятся перед блоками, на которые есть ссылки из других частей модели. Перечень основных блоков GPSS WORLD ADVANCE - реализация задержки во времени А - задержка на время обслуживания, В - половина поля допуска равномерно распределенного интервала времени задержки ASSING - изменение и установка значений параметров транзактов А - номер, имя модифицируемого параметра, В - величина, используемая для модификации АSSEMBLE - объединяет заданное число сообщений, принадлежащих к одному семейству, в одно сообщение (осуществляет сборку заданного числа сообщений). После сборки из блока ASSEMBLE выходит только одно сообщение, которое переходит в следующий по номеру блок. В одном и том же блоке ASSEMBLE возможна одновременная сборка сообщений нескольких семейств. Когда сообщение входит в блок ASSEMBLE, интерпретатор просматривает семейство, к которому принадлежит это сообщение, проверяет, есть ли другое сообщение из того же семейства в данном блоке ASSEMBLE. А - задает число сообщений, участвующих в сборке. Первоначальное значение аргумента поля А должно быть больше или равно единице. Если при входе исходного сообщения в блок ASSEMBLE значение счетчика стало равным нулю (т.е. нужно было "объединить" только одно сообщение), сообщение немедленно покидает блок ASSEMBLE и переходит в следующий по номеру блок. Если результат отрицательный (вычисленное значение аргумента поля А нулевое или отрицательное), происходит ошибка выполнения. Обычно значение счетчика сборки больше единицы, поэтому при входе в блок АSSEMBLE исходного сообщения результат вычитания единицы из счетчика положительный. COUNT Х - определение числа объектов, удовлетворяющих заданному условию, где Х - логический или условный оператор, А - задается номер параметра вошедшего в блок сообщения, в котором будет организован счетчик числа объектов. В - определяется нижняя граница диапазона изменения номеров или имен объектов, для которых проверяется заданное условие. С - определяется верхняя граница диапазона изменения номеров или имен объектов, для которых проверяется заданное условие. D - задается сравниваемое значение (величина сравнения) для аргумента поля Е. Е - используется совместно с аргументом поля D и условным оператором Х. В поле Е задается какой-либо из стандартных числовых атрибутов просматриваемых объектов. Необходимо только записывать мнемоническое обозначение атрибута, поскольку диапазон изменения номеров объектов задан полями В и С. Логический оператор может принимать следующие значения: NU - (U) - устройство свободно (устройство занято); NI - (I) - устройство не прервано (устройство прервано); FV - (FNV) - устройство доступно (устройство недоступно); SE - (SNE) - многоканальное устройство пусто (многоканальное устройство не пусто); SF - (SNF) - многоканальное устройство заполнено (не заполнено); SV - (SNV) - многоканальное устройство доступно (недоступно); LS - (LR) - проверка логического ключа на состояние "вкл." ("выкл"); При использовании логических операторов поля D и E могут быть пустыми. Условный оператор может принимать следующие значения: L - (G) - условие выполняется, если СЧА объекта, заданного в Е, меньше СЧА объекта, заданного в D (если СЧА объекта, заданного в Е, больше СЧА объекта, заданного в D). LE - (GE) - условие выполняется, если СЧА объекта, заданного в Е, меньше - равно СЧА объекта. заданного в D (если СЧА объекта, заданного в Е, больше - равно СЧА объекта, заданного в D). E - (NE) - условие выполняется, если СЧА объекта, заданного в Е, равно СЧА объекта, заданного в D (если СЧА объекта, заданного в Е, не равно СЧА объекта, заданного в D). MAX - (MIN) - наибольшее значение из всех значений СЧА объектов, удовлетворяющих заданному условию, (наименьшее значение из всех значений СЧА объектов, удовлетворяющих заданному условию). При использовании условных операторов поля D и Е должны быть заданы. DEPART - сбор статистики при ожидании (покинуть очередь), где А - имя очереди, длина очереди уменьшается на единицу. ENTER - занять свободные параллельно работающие каналы, где А - имя многоканального устройства, B - число занимаемых приборов. FAVAIL - делает доступным заданное устройство после периода недоступности, где А - номер или имя устройства, которое должно стать доступным. Этот блок игнорируется, если заданное устройство уже доступно. FUNAVAIL - делает недоступным заданное устройство до тех пор, пока не вступит в действие блок FAVAIL, где А - номер или имя устройства, которое должно стать недоступным. Этот блок игнорируется, если устройство уже недоступно. Режимы полей B - H относятся только к тем сообщениям, которые использовали устройство или генерировали на нем прерывание в момент, когда устройство стало недоступным. Другие сообщения, пытающиеся позднее занять устройство или прервать его в период недоступности, помещаются в список задержки; эти сообщения не подлежат воздействию режимов, заданных в полях В-Н. Помещение блоков PRIORITY 0, BUFFER перед блоком FUNAVAIL позволяет обрабатывать сообщения списка текущих событий таким образом, что последним обрабатывается сообщение, вызывающее недоступность устройства, т.е. все сообщения, которым разрешено попытаться занять или прервать устройство, могут сделать это до того, как оно станет недоступным. GATE Х - проверяет состояние устройства и управляет потоком сообщений, где Х - логический оператор, А - имя или номер объекта, для которого проводится проверка, В - номер следующего блока для входящего сообщения, когда логический оператор имеет значение "ложь". Логический оператор может принимать следующие значения: NU - (U) - устройство свободно, (устройство занято); NI - (I) - устройство не прервано, (устройство обслуживает прерывание); FV - (FNV) - устройство доступно (устройство не доступно); SE - (SNE) - многоканальное устройство пусто (многоканальное устройство не пусто); SF - (SNF) - многоканальное устройство заполнено (многоканальное устройство не заполнено); SV - (SNV) - многоканальное устройство доступно (многоканальное устройство не доступно); GATHER - накапливает заданное число сообщений, принадлежащих к одному семейству, где А - число сообщений. Ни одно из накапливаемых сообщений не уничтожается. Когда в блоке GATHER накопится заданное число сообщений, все эти сообщения одновременно попытаются войти в следующий по номеру блок. Сообщения никогда не задерживаются на входе блока GATHER. Одновременно в одном блоке GATHER может происходить накопление сообщений нескольких семейств. GENERATE - внесение транзактов в модель, где А - средний интервал времени, В - поло-вина поля допуска равномерно распределенного интервала времени задержки, С - начальная задержка смещения интервалов, D - ограничитель, Е - уровень приоритета LEAVE - освобождение определенного количества параллельно работающих каналов, где А - имя (символическое или числовое) многоканального устройства, В - число занимаемых каналов. LOOP - организация цикла, где А - счетчик цикла (число или имя), В - начало цикла (число или имя). MATCH - блок синхронизации движения двух сообщений, принадлежащих к одному семейству, без удаления этих сообщений из модели, где А - имя или номер другого блока MATCH, называемого "сопряженным блоком MATCH". Если такого блока нет, происходит останов по ошибке. Блоки MATCH не объединяют синхронизируемые сообщения. Синхронизация осуществляется путем подбора пар сообщений из одного семейства и задержки этих сообщений до тех пор, пока оба сообщения из одной пары не поступят в заданные точки модели. Сообщения никогда не задерживаются в блоке MATCH. Сообщения, для которых выполнилось условие синхронизации, переходят к следующему по номеру блоку. В одной паре блоков MATCH могут одновременно находиться в состоянии синхронизации пары сообщений из различных семейств. Возможна также одновременная синхронизации пар сообщений из одного семейства в нескольких блоках MATCH. PRIORITY - изменение уровня приоритета транзакта, где А - значение, присваиваемое в качестве уровня приоритета активного транзакта. PREEMPT - занять устройство. Блок PREEMPT может задержать сообщение на входе, где А - определяет номер или имя устройства, на котором генерируется прерывание, В - задает приоритетный режим (PR) или режим прерывания, если операнд опущен. QUEUE - сбор статистики при ожидании (стать в очередь), где А - имя очереди, длина очереди увеличивается на единицу. RELEASE - освобождение занятого устройства, где А - имя освобождаемого устройства. RETURN - освобождение ранее захваченного устройства, где А номер устройства, с которого снимается прерывание. Прерывание может быть снято в блоке RETURN только тем сообщением, которым оно было генерировано. SELECT Х - выбирает первый элемент в заданном диапазоне, который удовлетворяет определенному условию. Номер этого объекта записывается в заданный параметр вошедшего в блок транзакта, действия блока SELECT аналогичны действию блока COUNT. SAVEVALUE - замена, увеличение или уменьшение текущего содержимого ячейки, где А - сохранение значения, может заканчиваться знаками + или - , В - задается значение для запоминания, сложения или вычитания. SAVAIL - переводит заданное многоканальное устройство из состояния недоступности в состояние доступности. Если заданное многоканальное устройство уже находится в состоянии доступности, блок SAVAIL выступает как пустой блок. А - номер многоканального устройства, которое следует перевести в состояние доступности. SUNAVAIL - переводит заданное многоканальное устройство из состояния доступности в состояние недоступности. Если заданное многоканальное устройство уже находится в состоянии недоступности, блок SUNAVAIL выступает как пустой блок. А - номер многоканального устройства, которое следует перевести в состояние недоступности. SEIZE - занять свободное устройство, где А - имя (символическое или числовое) занимаемого устройства TABULATE - определение и использование таблиц, где А - имя таблицы. TEST Х - определяет номер следующего блока, где Х - условие (L,LE,E,NE,G,GE), А и В - сравниваемые величины, С - номер блока, если "ложь". TERMINATE - удаление транзактов из модели, где в А задается число единиц. на которое этот блок изменяет содержимое счетчика завершений, определяющего момент окончания моделирования. Если А не задано, транзакт выводится из модели, а содержимое счетчика не изменяется. TRANSFER - перенаправление движения транзактов. Если А - не используется, Б - позиция блока, в который должен перейти транзакт. Значение аргумента после точки в операнде А показывает, какой процент входящих в блок сообщений направится по адресу в С, остальные транзакты направляются к блоку, указанному в операнде В, или к следующему блоку, если операнд В пропущен. SPLIT - копирует входящее в него сообщения, которое называется исходным где А - число создаваемых копий, В - адрес следующего блока, к которому переходят копии исходного сообщения, причем значение вычисляется для каждой копии отдельно. |