Любые элементы в системах прямо или опосредованно связаны, взаимодействуют. Зависимость между процессами, протекающими в разных частях системы, нередко выражается в форме синхронизации, то есть в форме взаимного согласования этих процессов по времени.
Блок 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
В программе при возникновении сообщения от АП в ячейку с соответствующим номером заносится единица. При опросе АП ячейка с соответствующим номером проверяется на ненулевое значение: если содержимое ячейки равно нулю, то сообщения от АП нет, в противном случае сообщение передается к ЭВМ.