Процессно-ориентированный подход к моделирования систем

 

Понятие процесса

Применительно к системам моделирования процесс может быть определен с помощью концепции событий. Все множество событий {EV1, EV2, …, EVK} разбивается на подмножества {E1,E2,…, Ek} может быть пересекающееся, каждая из которых может быть связана с определенным процессом. Возникновении события EVi, принадлежащее подмножество Ek означает активизацию процесса PRk. То есть в течении интервала времени между метками ближайших событий EVl v EVm, принадлежащий подмножеству Ek в течении времени процесс PRk ждет активизации.

Процесс – это ориентированное по времени последовательность событий, наступление которых приводит к изменению состояния системы за счет выполнения активности. Понятие процесса концептуально более емкое, чем понятие события или состояния. Состояние – это моментальный «снимок» процесса. А событие – управляющее воздействие, заставляющее процесс изменить состояние. В концепции параллельных процессов важное значение имеет их синхронизация.

 

Схема слабо связанных процессов. Интеррагативное управление специального вида с помощью сигналов

 

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

Термин «слабо связанные» означает взаимодействие через монитор моделирования. Вместо функций условий для интерраготивного управления используются объекты специального вида – сигналы. Сигнал может находится в двух состояниях: послан, не послан. Посылка сигнала связана с выполнением условия: CN=(сигнал послан?)=true.

На уровлен реализации сигнал связан с множеством процессов, ожидающих его.

Структура объекта сигнал

                          SIGNAL

Состояние сигнала
Указатель на список процессов, ожидающих сигнал

 


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

                          DESCR

Идентификатор процесса
Признак готовности: 0 - готов
Указатель на следующий дескриптор в списке процессов
Указатель для связи дескрипторов в очередь к некоторому сигналу

 


Кольцо готовности процессов. P1 – P4 – идентификаторы

                CP

P1
0
 
 
P1
P2
0
 
 
P3
0
 
 
P4
0
 
 

 

 


CP – указатель на текущий выполняемый процесс.

Каждый процесс может посылать сигнал (оператор SEND) и ожидать посылки сигнала (оператор WAIT). Управление пересылкой сигналов производит монитор.

Когда один текущий процесс выдает команду WAIT(S) его признак готовности устанавливается в единицу и он включается в конец очереди к сигналу S. Текущим становится ближайший в кольце процесс, у которого признак готовности 0. Когда текущий процесс выдает команду SEND(S), то если очередь к сигналу S пуста, ничего не происходит – продолжается выполнение текущего процесса. Если очередь к сигналу S не пуста, из неё удаляется первый процесс, признак готовности у него устанавливается в 0 – он становится текущим. Процесс выдавший команду SEND остается готовым, но перестает быть текущим. Одновременно могут существовать очереди к нескольким сигналам, но они не пересекаются, т.к. любой процесс может ожидать посылки единственного сигнала

 

 
                          WAIT(S)        WAIT(S)      WAIT(S)

                CP

P1
0 -> 1
 
 
P1
P2
0 -> 1  
 
 
P3
0 -> 1  
 
 
P4
0
 
 

 


                                                                                                                             SEND(S)

 

 

 

 

 


 
                        S                     S1

 

P1
0
 
 
P1
P2
1  
 
 
P3
1
 
 
P4
0
 
 
 

 

 


 
                        S                     S1

 

Сигнальная сигнализация слабосвязанных процессов

Процесс 1 . . . SEND(S)
Процесс 2 WAIT(S) . . .  
Монитор

 


                                                                                   Передача управл.

 

 


                          Передача управл.

 

 

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

Пример: Взаимодействие двух процессов поставщик и потребитель происходит с использованием общего буфера сообщений.

Пример: взаимодействие двух процессов: поставщик и производитель происходит с использованием с использованием общего буфера входящих сообщений.

IMPLEMENTATION MODULE BUFFER;

Const N=128; (*размер буфера*)

Var n:[0..N]; (*текущее число элементов в буфере*)

НЕПОЛОН: SIGNAL; (*n<N*)

НЕПУСТ: SIGNAL; (*n>0*)

IN, OUT: [0..N-1]; (*индексы*)

BUF: array[0..N-1] of char; (*буфер*)

 

procedure ПОМЕСТИТЬ(x:char);

begin

If n=N then WAIT (НЕПОЛОН);

n:=n+1; BUF[IN]:=x;

IN:=(IN+1) mod N; SEND (НЕПУСТ);

end;

 

procedure ИЗВЛЕЧЬ (x:char);

begin

If n=0 then WAIT(НЕПУСТ);

n:=n-1; x:=BUF[OUT];

OUT:=(OUT+1) mod N;

SEND (НЕПОЛОН);

end;

 

 

begin

n:=0; IN:=0; OUT:=0;

INITSIGNAL (НЕПОЛОН);

INITSIGNAL (НЕПУСТ);

end.

 

 










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



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