Материал: Моделирование, анализ и оценка надежности информационных систем и технологий. Некравцева Т.А., Толстых Т.О

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

145

транзактов. Как и в блоке АDVANCE, это время может быть модифицировано с помощью модификатора в поле В (интервала или функции). В поле может быть записан «О». Если при вычислении времени появления в системе первого транзакта оно получилось равным 0, то симулятор полагает его равным I. Среднее время принимается равным 1, если поле В пусто, а в поле А описан модификатор-функция. Задаваемый модификатор-интервал не должен превосходить среднего, записанного в поле А, чтобы не получались отрицательные интервалы между моментами появления транзактов.

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

Вполе С записывается начальная задержка. Заданное в этом поле число (без модификации) определяет интервал времени до создания данным блоком первого транзакта. Это число может быть меньше, равно или больше, чем среднее, заданное в поле А.

Поле D задает число транзактов, которое должно быть создано блоком GENERATE. Если это поле пусто, то блок генерирует неограниченное число транзактов.

Вполе Е задается приоритет (от 0 до 127), присваиваемый генерируемым транзактам. Если в этом поле значение приоритета не задано, генерируемые транзакты имеют нулевой приоритет.

Поля F —1 резервируют для транзакта необходимое число типов параметров. Максимально допустимое число параметров —1020, т. е. 255 параметров каждого формата: «слово», «полуслово», «байт», «плавающая точка». Поскольку параметры не кодируются в определенной последовательности, то для определения типа их необходимо использовать индексы. Допустимыми индексами являются: РН — параметр формата «полуслово»; РF — параметр формата «слово»; РВ — параметр формата «байт»; РL — параметр формата «плавающая точка». Если поля пусты, то транзакту выделяется 12 парамет-

146

ров формата «полуслово». Если в поле F записан «О», то у транзакта нет параметров. Первоначальные значения параметров равны 0.

Рассмотрим несколько примеров использования блока

GENERATE.

GENERATE 10,3,100,16,5,5РВ,20РН,ЗРL,4РF

(транзакты создаются через каждые (10 ± 3) единиц времени, причем первый транзакт создан в момент времени, равный 100, всем 16 транзактам, созданным в этом блоке, присваивается приоритет 5; каждый транзакт имеет по пять параметров формата «байт», по 20 параметров формата «полуслово», то три параметра формата «плавающая точка» и по четыре параметра формата «слово»).

GENERATE 10,2,1000,10,4

(транзакты генерируются через каждые (10 ± 2) единиц времени, причем первый из десяти генерируемых этим блоком транзактов создан в момент времени, равный 1000; всем транзактам присваивается приоритет 4, и все они имеют по 12 параметров формата «полуслово», так как поля, задающие число параметров, пусты).

Блок ТERMINATE удаляет транзакты из системы. Он используется для изображения окончания пути транзакта в системе (например, в момент прибытия транзакта в пункт назначения). Поле А блока ТЕRMINATE указывает, изменяет ли этот блок содержимое счетчика завершения ТG1 в момент поступления транзакта и, если изменяет, то на сколько единиц. В приведенном ниже примере в поле А записано 2. Это значит, что каждый раз, когда транзакт входит в этот блок, из счетчика завершений вычитается 2. Если содержимое этого счетчика задано (специальной картой START) равным 1000 и во всей модели один блок ТЕRMINATE, то до завершения счета через этот блок пройдет 500 транзактов. Если поле не определено, то оно считается равным 0, и транзакты, проходящие через такой блок, не уменьшают содержимого счетчика завершений. Соответственно в модели должен быть хотя бы один блок ТЕRMINATE, у которого поле А не меньше 1, чтобы процесс моделирования закончился. Если в модели такого блока нет, то счет будет продолжаться до тех пор, пока задачу не остановит оператор.

Рассмотрим примеры использования блока ТЕRMINATE:

ТЕRMINATE

(удаляет транзакт, счетчик Т01 не изменяется);

ТЕRMINATE 2

147

(уменьшается счетчик ТG1 на 2).

3. Группа блоков изменения параметров транзактов. Каждый тран-

закт может иметь от 0 до 1020 параметров. Интерпретация смысла параметров произвольная. В момент генерации транзакта все его параметры нулевые. Блок АSSIGH является основным средством для задания значений параметров транзактов. В поле А указывается, какой параметр поступившего транзакта должен быть изменен. Следующий непосредственно за номером параметра символ указывает, что нужно сделать с записанным в поле В целым числом: прибавить его к текущему значению параметра; вычесть его из текущего значения параметра; заменить текущее значение этим числом. Эти операции соответственно обозначаются: п +, п -, п, где п — номер параметра.

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

В поле D задается тип изменяемого параметра. Допускаются следующие записи: РН, РF, РВ, РL, соответствующие параметрам формата: «полуслово», «слово», «байт» и «плавающая точка». Если модификатор-функция не задан, то вместо поля О можно использовать поле С. Например:

АSSIGN 1,475,PH

(т. е. первому параметру формата «полуслово», входящему в блок АSSIGN транзакта, нужно присвоить значение 475).

АSSIGN 12+45,РВ

(т. е. текущему значению 12-го параметра формата «байт» прибавить число 45).

Можно изменять значения нескольких последовательных параметров одного типа следующим образом:

АSSIGN 1—7,5„РН

(здесь текущее значение параметров с 1-го по 7-й включительно (формата «полуслово») заменяется числом 5).

Если же число 5 следует прибавить к текущему значению этих параметров, то блок следует закодировать так:

АSSING 1—7+5„РН

Если в поле С задан модификатор-функция и предполагается функция 1, то в поле С должна быть такая запись:

148

ASSIGN 3.5.1РН но не такая:

АSSING 3,5,FN1,РН

(здесь номер функции определяется вычислением значения функции 1; результат будет одинаковым в том случае, если значение FN1 равно 1).

Пример 2. Построить программу модели процесса прохождения 70 деталей, поступающих с интервалом времени 12 ± 2 единицы и обрабатываемых одним рабочим по пяти последовательно идущим друг за другом операциям, времена выполнения которых распределены в интервале 2 ± 1 единица времени. Распределение всех времен в указанных интервалах равномерно. В результате моделирования требуется определить коэффициент занятости рабочего. Программа имеет вид:

SIMULATE

 

Начало моделирования

GENERATE

12,2

Поступление деталей

ASSIGN

2,5,,PB

Счетчик операций

SEIZE

1

Запуск детали

WAIT ADVANCE

2,1

Операция

LOOP

2PB,WAIT Переход к следующей опера-

ции

 

 

RELEASE

1

Выпуск детали

TERMINATE

1

 

START

7

 

END

 

 

4. Группа блоков создания копий транзактов. Блок SPLIT, так же как блок GENERATE предназначен для создания транзактов. Но в отличие от GENERATE блок SPLIT не создает самостоятельных транзактов, а лишь генерирует заданное число копий входящего в него транзакта. Получаемые копии идентичны исходному транзиту. Числу копий задается в поле А. После прохождения блока SPLIT исходный транзакт направляется в /следующий блок, а все копии пересылаются по адресу, указанному в поле В (в том числе и к следующему блоку). Таким образом, если в поле А задано число i, то из блока выйдут i+1 транзакт. Далее исходное сообщение и копии являются равноправными и Вмогут проходить снова через любое число блоков SPLIT.

149

Все транзакты, полученные копированием, а также копии копий принадлежат к одному ансамблю и далее к этому ансамблю можно применять специальные блоки, осуществляющие обработку ансамблей транзактов (например,

МАТСН, АSSEMBLЕ, GETHER).

Получаемый ансамбль транзактов может быть пронумерован. Для этого в поле С записывается номер параметра транзакта, в котором будет произведена нумерация. Если в исходном транзакте значение этого параметра было равно k, то после нумерации исходный транзакт получит значение k + I, первая копия — k + 2 и т. д.

Так как копии транзакта могут иметь параметры разных типов, то необходимо использование индекса для указания типа параметра, который берется при объединении в серии. Допускаются индексы: РН—параметр формата «полуслово»; РF—параметр формата «слово»; РВ—параметр формата «байт». Исходный транзакт и копии объединяются в серии по заданному параметру. В приведенном ниже примере рассматривается случай, когда параметр 10 формата «байт» имеет значение N при входе транзакта в блок SPLIT. При выходе из блока значение его станет N+1, а значения параметра 10 (формата «байт») транзактов копий соответственнo будут: N+ 2, ...

SPLIT 6,NEXTY,10PB

Копии, полученные в блоке SPLIT, могут иметь число и типы параметров, отличные от исходного транзакта.

В полях D, Е, F и G блока SPLIT определяются число и типы параметров, присваиваемых копиям. Эти поля, начиная с поля D, можно задавать в любом порядке. В каждом поле должен быть указан индекс параметра для определения его типа (используются те же индексы, что и в блоке GENERATE). В копии переносятся значения только тех параметров исходного транзакта, для которых есть соответствующие номера. Если поля D, F, Е и G пусты, параметры копий такие же, как и у исходного транзакта. В приведенном ниже примере каждая из восьми копий будет иметь по восемь параметров формата «плавающая точка» и четыре параметра формата «байт». Если исходный транзакт имеет соответствующие параметры, содержимое параметров будет передано копиям:

SPLIT 8,NEXTZ„8РL,4РВ

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

5. Группа блоков синхронизации движения транзактов. Блок АSSEMBLE используется для объединения определенного числа транзактов, являющихся членами одного ансамбля. Число объединяемых ансамблей ука-

Источник: https://studfile.net/preview/16563751/