СИМУЛА - универсальный процессо-ориентированный язык моделирования, страница 12

Понятия системного времени и процесса определены в специальном классе - классе SIMULATION.

В классе  SIMULATION описаны классы EVENT и PROCESS, являющиеся подклассами класса LINK. Класс SIMULATION является подклассом класса SIMSET, в классе SIMULATION описаны также процедуры, которые позволяют описывать действия над объектами.

В имитационной модели, написанной на языке СИМУЛА-67 с использованием средств класса SIMULATION, объекты моделируемых систем представляются процессами, а работа отдельных процессов и их взаимодействие отражают функционирование системы.

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

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

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

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

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

Процесс попадает в завершенное состояние при выходе управления через завершающий символ 'END' его декларации класса или в результате исполнения оператора перехода к нелокальной метке.

Атрибутами класса SIMULATION являются процедуры PASSIVATE, CANCEL, WAIT, HOLD, которые позволяют переводить процесс из одного состояния в другое. Для планирования новых событий в классе SIMULATION предусмотрены специальные операторы -'ACTIVATE' и 'REACTIVATE'.

Значение текущего системного времени можно получить, обратившись к процедуре-функции TIME, процедура CURRENT выдает в качестве значения ссылки на текущий процесс.

Рассмотрим специальные процедуры и операторы класса SIMULATION.

Для планирования новых событий используются операторы 'ACTIVATE' и 'REACTIVATE'. Для того чтобы запланировать событие, необходимо задать момент системного времени, в который оно должно произойти, и процесс, для которого планируется данное событие.

Синтаксис данных операторов имеет вид:

[<пусто>]

[ 'ACTIVATE']          [   [  'AT' T  ] [ 'PRIOR']  ]

X          [  [  'DELAY'  T]    ]

[ 'REACTIVATE' ]         [  'AFTER' Y   ]

[   'BEFORE'  Y         ]

Где Х - объектное выражение, обозначающее процесс, для которого планируется событие;

Т - арифметическое выражение, значение которого трактуется в случае 'AT'  T как абсолютное системное время, а в случае 'DELAY'  T - как время задержки планируемого события относительно текущего момента системного времени;

Y -объектное выражение, обозначающее активный или приостановленный процесс.

Оператор 'AKTIVATE' выполняет планирование события только для пассивных процессов, а оператор  'REACTIVATE' выполняет планирование и для процессов, находящихся в активном или приостановленном состоянии.