5.2Процессы



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

Построение процессов осуществляется в результате доказательства конструкторов процессов. Создателем процесса называется процесс, одному из слотов миров которого соответствовал инициализатор — конструктор рассматриваемого процесса.

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

«Фазами» исполнения процесса называются законченные периоды исполнения процесса, соответствующие:

•обработке процессом сообщений;

•изменению состояния процесса.

После (успешного) окончания очередной фазы исполнения процесса осуществляется «фиксирование» процесса, а именно:


  1. Устраняются все точки выбора, возникшие в течение этой фазы.

  2. Фиксируются все общие переменные всех акторов, принадлежащих процессу.

Процесс, находящийся на очередной фазе своего исполнения, называется активным.

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

Считается, что некоторые процессы «согласованы» между собой, если:


  1. Все они находятся в состояниях «доказан» и «неиспользуемый».

  2. Не требуется обработка потоковых и прямых сообщений процессами, находящимися в состоянии «доказан».

  3. Не требуется обработка потоковых сообщений процессами, находящимися в состоянии «неиспользуемый».

  4. Производные значения общих переменных всех процессов могут быть унифицированы.

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








5.2.1 Состояния процесса



В каждый конкретный момент времени процесс находится в одном из трёх состоя ний:

1. «объявленный»;

2. «используемый»;

3. «неиспользуемый».

В состоянии «объявленный» процесс находится сразу после его создания. Объявленный процесс характеризуется тем, что соответствующие ему экземпляры классов ещё не сформированы. Пока процесс находится в состоянии «объявленный», обработка любых сообщений этим процессом откладывается. Считается, что объявленный процесс не имеет никаких производных значений, и что его акторы несогласованы. После формирования процесса он переходит в состояние «сформированный».

«Используемый процесс» — это обобщающее название для следующих трёх состояний процесса:

1.«сформированный»;

2.«доказанный»;

3.«неудачный».

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

Переход процесса в состояние «неиспользуемый» называется «отключением» процесса. Переход процесса в состояние «используемый» называется «подключением» процесса.

Переключение между состояниями процесса «используемый» и «неиспользуемый» происходит автоматически при получении им определённых разновидностей потоковых сообщений. При переходе из состояния «неиспользуемый» в состояние «используемый», процесс всегда оказывается в том конкретном состоянии, в котором он находился до перехода в состояние «неиспользуемый». Если до перехода в состояние «неиспользуемый» процесс находился в состоянии «объявленный», он автоматически переводится в состояние «сформированный».

Переключение между различными разновидностями состояния «используемый» происходит в зависимости от результатов очередной фазы исполнения соответствующего процесса:

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

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

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

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




5.2.2Порты процессов



Переменные процесса G, которые могут принадлежать акторам других процессов, называются портами процесса G.
В ходе исполнения программы каждому порту процесса ставятся в соответствие:

1.Сорт порта: простой, отключающий или защищающий.

2.Состояние порта — вспомогательное логическое значение: «согласованный» или «несогласованный».

3.Актор-представитель порта процесса — некоторый вспомогательный актор, принадлежащий процессу.

4.Текущее значение порта — некоторый вспомогательный терм.

5.Сорт текущего значения порта — вспомогательное логическое значение: «защищенное» или «незащищённое».

6.Производитель текущего значения порта — процесс, построивший текущее значение порта.

Акторы-представители портов процесса предназначены для хранения информации, приходящей в процесс через порты в виде потоковых сообщений.

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

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

Порты процесса создаются (определяются) в ходе формирования процесса.

Процесс относит каждый из своих портов к одному из трёх сортов:

1.простой;
2.отключающий;
3.защищающий.


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

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

2.Отключающий порт R процесса G всегда активизируется в начале фазы исполнения процесса G, если производителем текущего значения порта R является процесс, отличный от G.

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

1.Все потоковые сообщения, передаваемые процессом через защищающий порт автоматически объявляются защищенными.

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

Если порт не является отключающим и не является защищающим, он называется (является) простым.

Сорта портов задаются с помощью описателей портов или по умолчанию. Описателями портов служат ключевые слова «suspending» и «protecting», обозначающие «отключающий» и «защищающий» соответственно.

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

Примечание. Для портов различных сортов рекомендуются следующие графические обозначения:



Содержание