Основы объектно-ориентированного проектирования


Моделирование - часть 3


Процесс может находиться в одном из четырех состояний:

  • активный - выполняемый в данный момент;
  • приостановленный - ждущий продолжения;
  • бездействующий - холостой, или не являющийся частью системы;
  • завершенный.

Любое моделирование (то есть любой экземпляр потомка SIMULATION) поддерживает список событий (event list), содержащий уведомления о событиях (event notices). Каждое уведомление - это пара <process, activation_time>, где activation_time означает время активизации процесса process. (Здесь и далее любое упоминание о времени, так же как слова "когда" или "в настоящее время", относится к модельному времени - времени внешней системы, доступному через time.) Список событий сортируется по возрастанию activation_time; первый процесс активный, все остальные приостановлены. Незавершенные процессы, которых нет в списке, являются бездействующими.

Список событий

Рис. 17.2.  Список событий

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

activate some_process scheduling_clause

где some_process - непустая сущность типа PROCESS. Необязательный параметр scheduling_clause задается одной из следующих форм:

at some_time delay some_period before another_process after another_process

Первые две формы указывают на позицию нового уведомления о событии, задавая время его активизации, вычисляемое как max (time, some_time) для формы at и max (time, time + some_period) в форме delay. Новое уведомление о событии будет внесено в список событий после любого другого события, уже находящегося в перечне с меньшим или таким же временем активизации, если оно не помечено prior.


Начало  Назад  Вперед



Книжный магазин