Введение
В информатике модель акторов и исчисления процессов — два тесно связанных подхода к моделированию конкурентных цифровых вычислений. См. модель акторов и историю исчислений процессов. Между этими двумя подходами много общего, но есть и несколько различий (как философских, так и технических): существует только одна модель акторов (хотя она имеет множество формальных систем для проектирования, анализа, верификации, моделирования и т. д.); существует множество исчислений процессов, разработанных для рассуждений о различных видах конкурентных систем на разных уровнях детализации (включая исчисления, включающие время, стохастические переходы или конструкции, специфичные для областей применения, таких как анализ безопасности). Модель акторов вдохновлена законами физики и опирается на них для своих фундаментальных аксиом, то есть физических законов (см. Теория модели акторов); исчисления процессов изначально были вдохновлены алгеброй. Процессы в исчислениях процессов анонимны и взаимодействуют путем отправки сообщений либо через именованные каналы (синхронные или асинхронные), либо через амбиенты (которые также могут использоваться для моделирования коммуникаций, подобных каналам). В отличие от этого, акторы в модели акторов обладают идентификатором и взаимодействуют, отправляя сообщения по адресам других акторов (этот стиль взаимодействия также может использоваться для моделирования коммуникаций, подобных каналам — см. ниже). Публикации по модели акторов и исчислениям процессов содержат значительное количество перекрестных ссылок, благодарностей и взаимных цитирований (см. историю модели акторов и исчислений процессов).
There is only one Actor model (although it has numerous formal systems for design, analysis, verification, modeling, etc. ); there are numerous process calculi, developed for reasoning about a variety of different kinds of concurrent systems at various levels of detail (including calculi that incorporate time, stochastic transitions, or constructs specific to application areas such as security analysis). The Actor model was inspired by the laws of physics and depends on them for its fundamental axioms, i. e. physical laws (see Actor model theory); the process calculi were originally inspired by algebra Processes in the process calculi are anonymous, and communicate by sending messages either through named channels (synchronous or asynchronous), or via ambients (which can also be used to model channel like communications ). In contrast, actors in the Actor model possess an identity, and communicate by sending messages to the mailing addresses of other actors (this style of communication can also be used to model channel like communications—see below). The publications on the Actor model and on process calculi have a fair number of cross references, acknowledgments, and reciprocal citations (see Actor model and process calculi history).
Как работают каналы
Косвенная коммуникация с использованием каналов (например, как описано Гиллзом Каном и Дэвидом МакКуином в [1977]) является важной проблемой для коммуникации в параллельных и конкурентных вычислениях, влияющей как на семантику, так и на производительность. Некоторые исчисления процессов отличаются от модели акторов тем, что используют каналы вместо прямой коммуникации.
Синхронные каналы
Синхронные каналы обладают тем свойством, что отправитель, поместивший сообщение в канал, должен ждать, пока получатель не извлечет это сообщение из канала, прежде чем он сможет продолжить работу.
Простые синхронные каналы
Синхронный канал может быть смоделирован актором, который принимает сообщения для отправки (put) и получения (get). Ниже приведено описание поведения актора для простого синхронного канала:
Каждое сообщение, отправляемое через put, содержит данные и адрес, на который отправляется подтверждение после того, как сообщение будет получено через get в порядке FIFO. Каждое сообщение get содержит адрес, на который отправляются полученные данные.
Each put communication has a message and an address to which an acknowledgment is sent when the message is received by a get communication from the channel in FIFO order. Each get communication has an address to which the received message is sent.
Эффективность
Как отмечалось в работе Кнабе [1992], проблемой вышеописанного протокола (простой распределенный протокол) является большое количество сообщений, необходимых для выполнения процедуры согласования перед отправкой сообщения по синхронному каналу. Действительно, как показано в предыдущем разделе (Livelock), число этих сообщений может быть неограниченным.
Асинхронные каналы
Асинхронные каналы обладают свойством, при котором отправитель, помещающий сообщение в канал, не обязан ждать, пока получатель извлечет это сообщение из канала.
Простые асинхронные каналы
Асинхронный канал может быть смоделирован актором, который принимает сообщения "положить" (put) и "взять" (get). Ниже приведено поведение актора для простого асинхронного канала:
Каждое сообщение "положить" содержит данные и адрес, на который немедленно отправляется подтверждение (без ожидания, пока сообщение будет получено сообщением "взять"). Каждое сообщение "взять" содержит адрес, на который отправляются полученные данные.
Each put communication has a message and an address to which an acknowledgment is sent immediately (without waiting for the message to be gotten by a get communication). Each get communication has an address to which the gotten message is sent.
Асинхронные каналы в процессе вычислений
Язык программирования Join calculus (опубликован в 1996 году) реализовал локальные и распределённые параллельные вычисления. Он включал асинхронные каналы, а также разновидность синхронного канала, используемого для вызова процедур. Aπ Actor calculus Агхи основан на типизированной версии асинхронного π-исчисления.
Алгебры
Использование алгебраических методов впервые появилось в процессах исчисления. Впоследствии, в , , , было разработано несколько различных процессов исчисления, предназначенных для обеспечения алгебраического рассуждения о системах акторов.
Денотационная семантика
Уилл Клингер (основываясь на работах Айрин Грейф [1975], Гордона Плоткина [1976], Генри Бейкера [1978], Майкла Смита [1978] и Франца, Хоара, Леманна и де Ровера [1979]) опубликовал первую удовлетворительную математическую денотационную теорию модели акторов, используя теорию областей в своей диссертации в 1981 году. Его семантика противопоставляет неограниченный недетерминизм модели акторов ограниченному недетерминизму CSP [Hoare 1978] и параллельных процессов [Milne and Milner 1979] (см. денотационную семантику). Роско [2005] разработал денотационную семантику с неограниченным недетерминизмом для последующей версии Communicating Sequential Processes Хоара [1985]. В последнее время Карл Хьюитт [2006b] разработал денотационную семантику для акторов, основанную на временных диаграммах. Уго Монтанари и Кэролин Талкотт [1998] внесли вклад в попытки согласовать акторов с исчислением процессов.