Синхронизация транзактов

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

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

SPLIT 4,NEXT

порождается четыре транзакта, идентичных вошедшему, и передается в блок, в поле метки которого записано NEXT. Породивший их транзакт передается в блок, записанный после блока SPLIT. Всего из этого блока SPLIT выходит пять транзактов.

Если поле С непустое, то его значение интерпретируется как номер пара­метра транзакта. Пусть N - значение этого параметра в момент входа транзакта в блок SPLIT. Тогда в момент выхода из SPLIT данный параметр у исходного транзакта будет иметь значение N+1, а у копий транзактов соответственно N+2, N +З..... N+K, где К - общее число вышедших из блока SPLIT транзактов. На­пример, если транзакт, имеющий нуль в десятом параметре, войдет в блок

SPLIT 2,ABCD,10,

то параметр Р10 у этого транзакта приобретет значение 1, а у копий – соответственно 2 и 3.

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

Множество, состоящее из исходного транзакта и всех его копий, называ­ется семейством транзактов. Копия члена семейства является членом того же семейства. Любой транзакт - член только одного семейства

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

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

Например, если в блок

ASSEMBLE 4

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

Пример 7

Промоделировать сборку изделий рабочими А, В и С. Изделия в разо­бранном виде поступают каждые 300±100 мин. Каждое из них разделяется ме­жду рабочими А и В, которые параллельно готовят свою часть изделия к сбор­ке; рабочий А тратит на работу 100±20 мин, рабочий В - 80±20 мин. После окончания работы рабочими А и В рабочий С выполняет сборку изделия за 50±5 мин.

Модель сборки изделий:

GENERATE 300,100                поступление изделий                                                                                                                                                     

SPLIT 1.MAN B                       разделение изделий                                                                                                                                                                          

SEIZE RABA                           занять рабочего А                                                                                                                                                                                                

ADVANCE 100,20

RELEASE RABA

TRANSFER,MANC

MANB SEIZE RABB                                  занять рабочего В                                                                                                                                                                

ADVANCE 80,20

RELEASE RABB

MANC ASSEMBLE 2                                ждать обе части изделия                                                                                                                       

SEIZE RABC                           занять рабочего С                                                                                                                                                                                                  

ADVANCE 50, 5

RELEASE RABC

TERMINATE 1                       завершение сборки                                                                                                                                                                           START 1000

END

Пример 8. Модель вычислительной системы с несколькими абонентскими пунктами (АЛ)

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

Исходные данные:

1) опрос циклический;

2) время, затрачиваемое на опрос одного АП -100 мс;

3) интервалы времени между опросами -10 мс;

4) передача информации происходит со скоростью 300 символов/с;

5) сообщение может содержать от 6 до 60 сотен символов;

6) интервалы времени между возникающими сообщениями от АП распре­делены экспоненциально со средним значением 50 мс;

7) время обработки сообщения от ЭВМ - 500 мс.

Определим вычислительные объекты:

• функция OPR имитирует список опроса; аргумент - параметр P1, при условии, что в него будет записываться номер опрашиваемого АП,

• функция NAP определяет случайным образом номер АП, на котором возникло сообщение для ЭВМ;

• функция SMV определяет число символов во входном сообщении;

• переменная TZAN определяет время занятия канала связи, равное дли­не сообщения, разделенное на скорость передачи. (Время переведено в мс):

Программа:

SIMULATE

OPR FUNCTION P1,D5

1,2/2,3/3,4/4,5/5,I

NAP FUNCTION RN1,D5

.2,NAP1 /.4,NAP2/.6,NAP3/.8,NAP4/1,NAP5

SMV FUNCTION RN2,C2

.0,6/1.0,61

GOOPR FUNCTION P1,D5

1,VAR1/2,VAR2/3,VAR3/4,VAR4/5,VAR5

TZAN VARIABLE FN$SMV*lOOO/3

GENERATE 50*FNSXPDIS              возникновение сообщения от АП

                                                                                        

TRANSFER, FNSNAP                     определение номера АП                                                                                                                            

NAP1 SAVEVALUE 1+,1

TERMINATE

NAP2 SAVEVALUE 2+,1

TERMINATE

NAP3 SAVEVALUE 3+,l

TERMINATE

NAP4 SAVEVALUE 4+,1

TERMINATE

NAP5 SAVEVALUE 5+,1

TERMINATE

* опрос абонентских пунктов

GENERATE „,1                                циклический опрос от ЭВМ                                                                                                                                                                         

ASSIGN 1,1

POLL ASSIGN l,FN$OPR                                   определяется очередной АП                                                                                                                     

SEIZE CAN                                      занять канал под опрос                                                                                                                                                                                      

ADVANCE 100

TRANSFER,FN$GOOPR                  определение номера АП                                                                                              

VAR1 IF X1=0,PROD                                          если нет сообщения - продолжать опрос

savevalue 1-1

SPLIT 1.XM1T                                  передача сообщения в ЭВМ                                                                                                                                                                     

TRANSFER,PROD

VAR2 IF X2=0,PROD

SAVEVALUE 2-,l

SPLIT 1,XMIT

TRANSFER,PROD

VAR3 IF X3=0,PROD

SAVEVALUE 3-,1

SPLIT 1,XMIT

TRANSFER,PROD

VAR4 IF X4=0,PROD

SAVEVALUE 4-,l

SPLIT 1,XMIT

TRANSFER,PROD

VAR5 IF X5=0,PROD

SAVEVALUE 5-,l

SPLIT 1,ХМIT

PROD RELEASE CAN                   освободить канал от опроса.                                                                  

ADVANCE 10                                задержка между опросами                                                                                                                                                                                 

TRANSFER,POLL                         продолжение опроса                                                                                                                                              

* передача и обработка сообщения

ХМТ SEIZE CAN                                             передача к ЭВМ

ADVANCE V$TZAN

RELEASE CAN

ADVANCE 500                              обработка сообщения                                                                                                                                                                   

PRIORITY 1

SEIZE CAN                                   передача от ЭВМ                                                                                                                                                                                                        

ADVANCE V$TZAN

RELEASE CAN

TERMINATE

* таймер

GENERATE 10000

TERMINATE 1

START 1

END

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

 


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



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