Добавил:
sora.alai.102@gmail.com Делаю работы на заказ. Какие именно? Пишите. Или регайтесь на бирже, где я работаю: https://vsesdal.com/promo?ref=748568 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод. указания к ЛР (часть 2).docx
Скачиваний:
27
Добавлен:
25.11.2018
Размер:
168.9 Кб
Скачать

Лабораторная работа №8 создание копий транзактов и организация в моделях синхронизации движения транзактов

Цель работы: изучение блоков, обеспечивающих формирование и взаимодействие ансамблей и групп транзактов.

Краткие теоретические сведения

Кроме блока GENERATEдля создания транзактов используется блок SPLIT (расщепить). Но, в отличие от GENERATE, блок SPLIT не создает самостоятельных транзактов, а лишь генерирует заданное число копий входящего в него транзакта – порождающего. Блок SPLITимеет следующий формат:

SPLIT А,В,С

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

Операнд В – метка блока, к которому переходят копии порождающего транзакта. После прохождения блока SPLITпорождающий транзакт направляется в следующий блок, а все копии направляются по адресу, указанному операндом В (в том числе и к следующему блоку, если операнд В не указан).

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

Операнды В и С могут быть такими же, как и операнд А.

Приведем пример:

SPLIT 7,Меt,5

создает при входе порождающего транзакта 7 копий, которые направляются к блоку с меткой Меt. Каждая копия имеет тот же приоритет, время входа в модель и значения параметров, что и порождающий транзакт, за исключением параметра номер 5. В параметр номер 5 каждой очередной копии будет записан порядковый номер. Этот номер зависит от значения параметра 5 порождающего транзакта

Если параметр номер 5 порождающеготранзакта не определен заранее, он будет создан, и ему будет присвоено значение 0.В этом случае после выхода из блока SPLIT в параметр номер 5 порождающего транзакта будет записана 1, а в параметр номер 5 копий 2, 3, …, 8.

Если же параметр номер 5 порождающего транзакта определен заранее и его значение равно k,то в параметре номер 5 порождающего транзакта и его копий после выхода из блока SPLIT будут записаны k+1, k+2, k+3, …, k+8.

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

ASSEMBLE А

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

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

Например:

ASSEMBLE9

собирает 9транзактов одного семейства, 8 уничтожаются, один переходит в следующий блок.

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

Формат блока:

GATHER А

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

Блок GATHER также может одновременно производить сбор транзактов нескольких семейств и также имеет список синхронизации.

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

Форматблока:

Name MATCH A

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

Приведем пример:

Wait1 MATCHWait2

Wait2 MATCHWait1

При входе транзактав блок MATCHc именем Wait1 он будет ожидать момента, когда другой транзакт того же семейства войдет в блок MATCH с именем Wait2. Только после этого оба транзакта выйдут одновременно из блоков MATCH.