5.2Процессы
Процессом называется экземпляр класса, предложения которого
исполняются параллельно по отношению к предложениям других процессов. Процессам
соответствуют отдельные части пространства поиска, не пересекающиеся с другими процессами.
Построение процессов осуществляется в результате доказательства
конструкторов процессов. Создателем процесса называется процесс, одному из слотов миров
которого соответствовал инициализатор — конструктор рассматриваемого процесса.
Считается, что некоторый актор «принадлежит» процессу G, если
этот актор доказывается, доказан или должен быть доказан в мире, входящем в состав
процесса G. Исполнением процесса называется доказательство акторов, принадлежащих этому процессу.
«Фазами» исполнения процесса называются законченные периоды
исполнения процесса, соответствующие:
•обработке процессом сообщений;
•изменению состояния процесса.
После (успешного) окончания очередной фазы исполнения процесса осуществляется
«фиксирование» процесса, а именно:
- Устраняются все точки выбора, возникшие в течение этой фазы.
- Фиксируются все общие переменные всех акторов, принадлежащих процессу.
Процесс, находящийся на очередной фазе своего исполнения,
называется активным.
В быстрой и максимальной версиях языка гарантируется, что
исполнение любого процесса программы не может привести к неопределённо длительной
приостановке других процессов. В минимальной версии допускается поочерёдное
исполнение различных процессов.
Считается, что некоторые процессы «согласованы» между собой, если:
- Все они находятся в состояниях «доказан» и «неиспользуемый».
- Не требуется обработка потоковых и прямых сообщений процессами, находящимися в состоянии «доказан».
- Не требуется обработка потоковых сообщений процессами, находящимися в состоянии «неиспользуемый».
- Производные значения общих переменных всех процессов могут быть унифицированы.
Примечание. В языке используется только асинхронное
взаимодействие между процессами, поэтому предикаты каждого процесса обладают
декларативной семантикой, не зависящей от других процессов.
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», обозначающие «отключающий» и «защищающий» соответственно.
Примечание. Локальные значения акторов-представителей используются при исполнении встроенного оператора сору
вместе с локальными значениями других акторов процесса
Примечание. Для портов различных сортов рекомендуются следующие графические обозначения:
Содержание