Эта статья номинирована на проверку на нейтральность . ( Апрель 2017 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Эта статья была успешно импортирована в Викиучебники под названием Модель акторов и расчет процессов . |
В компьютерной науке , в Actor модель и процесс исчислений два тесно связанные подходы к моделированию параллельного цифрового вычисления . См. Модель акторов и историю расчетов процесса .
Между этими двумя подходами есть много общего, но есть и несколько различий (некоторые философские, некоторые технические):
- Есть только одна модель Актера (хотя она имеет множество формальных систем для проектирования, анализа, проверки, моделирования и т. Д. ); существует множество вычислений процессов , разработанных для рассуждений о множестве различных видов параллельных систем на разных уровнях детализации (включая вычисления, которые включают время, стохастические переходы или конструкции, специфичные для таких областей приложения, как анализ безопасности).
- Модель Актера была вдохновлена законами физики и зависит от них своими фундаментальными аксиомами, то есть физическими законами (см. Теорию модели Актера ); исчисления процессов изначально были вдохновлены алгеброй ( Milner 1993 ).
- Процессы в процессных вычислениях анонимны и обмениваются сообщениями посредством отправки сообщений либо через именованные каналы (синхронные или асинхронные), либо через окружающие (которые также можно использовать для моделирования канальных коммуникаций ( Cardelli and Gordon 1998 )). Напротив, акторы в модели акторов обладают идентичностью и общаются, отправляя сообщения на почтовые адреса других акторов (этот стиль коммуникации также можно использовать для моделирования канальных коммуникаций - см. Ниже).
Публикации по модели акторов и расчетам процессов содержат большое количество перекрестных ссылок, благодарностей и взаимных цитирований (см. Модель акторов и история расчетов процессов ).
Как работают каналы [ править ]
Непрямая связь с использованием каналов ( например, Gilles Kahn и David MacQueen [1977]) была важной проблемой для связи при параллельных и параллельных вычислениях, влияющих как на семантику, так и на производительность. Некоторые вычисления процессов отличаются от модели Актера тем, что они используют каналы, а не прямую коммуникацию.
Синхронные каналы [ править ]
Синхронные каналы обладают тем свойством, что отправитель, помещающий сообщение в канал, должен дождаться, пока получатель выведет сообщение из канала, прежде чем отправитель сможет продолжить.
Простые синхронные каналы [ править ]
Синхронный канал может быть смоделирован Актером, который принимает put
и get
обменивается данными. Ниже приводится поведение Актера для простого синхронного канала:
- Каждое
put
сообщение имеет сообщение и адрес, на который отправляется подтверждение, когда сообщение полученоget
сообщением из канала в порядке FIFO . - У каждого
get
сообщения есть адрес, на который отправляется полученное сообщение.
Синхронные каналы в технологических расчетах [ править ]
Однако простых синхронных каналов недостаточно для вычислений процессов, таких как коммуникационные последовательные процессы (CSP) [Hoare 1978 и 1985], из-за использования команды защищенного выбора (после Дейкстры) (называемой альтернативной командой в CSP). В команде защищенного выбора несколько предложений (называемых охранниками) могут быть сделаны одновременно по нескольким каналам put
и get
сообщениям; однако для каждого выполнения защищенной команды выбора можно выбрать не более одного из охранников. Поскольку можно выбрать только одну защиту, команда защищенного выбора в целом фактически требует своего рода протокола двухфазной фиксации или, возможно, даже протокола трехфазной фиксации, если тайм-ауты разрешены в охранниках (как в Occam 3 [1992]).
Рассмотрим следующую программу, написанную на CSP [Hoare 1978]:
[X :: Z! Stop () || Y :: guard: логическое; охранник: = правда; * [охранник → Z! go (); Z? Охранник] || Z :: n: целое число; n: = 0; * [X? Stop () → Y! False; print! n; [] Y? Go () → n: = n + 1; Д! Правда]]
В соответствии с Clinger [1981], эта программа иллюстрирует глобальный недетерминизм, так как недетерминизм возникает из неполной спецификации времени сигналов между тремя процессами X
, Y
, и Z
. Повторяющаяся охраняемая команда в определении Z
имеет две альтернативы:
stop
сообщение принимается отX
, в этом случаеY
передается значение FALSE иprint
посылается значениеn
go
сообщение принимается отY
, в этом случаеn
увеличивается , иY
посылается значение верно .
Если Z
когда-либо принимает stop
сообщение от X
, то X
завершается. Принятие stop
причин Y
для отправки false, которое при вводе в качестве значения его защиты приведет Y
к завершению. Когда оба X
и Y
завершились, Z
завершается, потому что у него больше нет активных процессов, обеспечивающих ввод.
В приведенной выше программе есть синхронные каналы от X
до Z
, Y
до Z
и Z
до Y
.
Аналогия с проблемой координации комитетов [ править ]
Согласно Knabe [1992], Chandy and Misra [1988] охарактеризовали это как аналог проблемы координации комитетов:
- Профессора в университете распределяются по различным комитетам. Иногда профессор решает присутствовать на заседании любого из ее комитетов и будет ждать, пока это станет возможным. Встречи могут начаться только при полной посещаемости. Задача состоит в том, чтобы, если все члены комитета ждут, то хотя бы один из них посетит какое-то собрание.
- Суть этой проблемы в том, что у двух или более комитетов может быть один профессор. Когда этот профессор становится доступным, она может выбрать только одно из собраний, в то время как остальные продолжают ждать.
Простой распределенный протокол [ править ]
В этом разделе представлен простой распределенный протокол для каналов в синхронных процессах. У протокола есть некоторые проблемы, которые рассматриваются в разделах ниже.
Поведение команды защищенного выбора следующее:
- Команда отправляет сообщение каждому из своих охранников
prepare
. - Когда он получает первый ответ от одного из своих охранников, что он подготовлен, он отправляет сообщение этому охраннику
prepare to commit
и отправляет сообщения всем другим охранникамabort
.- Когда он получает сообщение от охранника, что это так
prepared to commit
, он отправляет охранникуcommit
сообщение. Однако, если охранник выдает исключение, которое он не можетprepare to commit
, то команда защищенного выбора запускает весь процесс заново.
- Когда он получает сообщение от охранника, что это так
- Если все его охранники отвечают, что не могут
prepare
, охраняемая команда ничего не делает.
Поведение охранника следующее:
- Когда сообщение
prepare
получено, охранник отправляетprepare
сообщение на каждый из каналов, с которыми он предлагает общаться. Если у сторожа есть такие логические значения, что он не может,prepare
или если какой-либо из каналов отвечает, что они не могутprepare
, то он отправляетabort
сообщения другим каналам, а затем отвечает, что не можетprepare
.- Когда сообщение
prepare to commit
получено, охрана отправляетprepare to commit
сообщение на каждый из каналов. Если какой-либо из каналов отвечает, что они не могутprepare to commit
, он отправляетabort
сообщения другим каналам, а затем генерирует исключение, которое не можетprepare to commit
. - Когда сообщение
commit
получено, охранник отправляетcommit
сообщение на каждый из каналов. - Когда сообщение
abort
получено, охранник отправляетabort
сообщение на каждый из каналов.
- Когда сообщение
Поведение канала следующее:
- Когда
prepare to put
сообщение получено, ответьте, что оно подготовлено, если естьprepare to get
ожидающее сообщение, еслиterminate
сообщение не было получено, и в этом случае выбросить исключение, которое он не можетprepare to put
. - Когда
prepare to get
сообщение получено, ответьте, что оно подготовлено, если естьprepare to put
ожидающее сообщение, еслиterminate
сообщение не было получено, и в этом случае выбросить исключение, которое он не можетprepare to get
.- Когда
prepare to commit to put
сообщение получено, ответьте, что оно подготовлено, если естьprepare to commit to get
ожидающее сообщение, еслиterminate
сообщение не было получено, и в этом случае выбросить исключение, которое он не можетprepare to commit to put
. - Когда
prepare to commit to get
сообщение получено, ответьте, что оно подготовлено, если естьprepare to commit to put
ожидающее сообщение, еслиterminate
сообщение не было получено, и в этом случае выбросить исключение, которое он не можетprepare to commit to get
.- Когда
commit put
сообщение получено, то в зависимости от того, что из следующего получено:- Когда
commit get
сообщение было получено, то , если не сделано выполнитьput
иget
и очистить препараты. - Когда
abort get
сообщение получено, отмените приготовления.
- Когда
- Когда
commit get
сообщение получено, то в зависимости от того, что из следующего получено:- Когда
commit put
сообщение было получено, то , если не сделано выполнитьget
иput
и очистить препараты. - Когда
abort put
сообщение получено, отмените приготовления.
- Когда
- Когда
abort put
сообщение получено, отмените приготовления. - Когда
abort get
сообщение получено, отмените приготовления.
- Когда
- Когда
Голодание при получении из нескольких каналов [ править ]
Снова рассмотрим программу, написанную на CSP (обсуждаемую выше в разделе « Синхронные каналы в вычислениях процесса» ):
[X :: Z! Stop () || Y :: guard: логическое; охранник: = правда; * [охранник → Z! go (); Z? Охранник] || Z :: n: целое число; n: = 0; * [X? Stop () → Y! False; print! n; [] Y? Go () → n: = n + 1; Д! Правда]]
Как указано в Knabe [1992], проблема с вышеуказанным протоколом ( простым распределенным протоколом ) заключается в том, что процесс Z
может никогда не принять stop
сообщение от X
(явление, называемое голоданием ), и, следовательно, указанная выше программа может никогда ничего не распечатать.
В отличие от этого, рассмотрим простую систему Актеров, состоящую из Актеров X , Y , Z , и напечатайте, где
- Актер X создается со следующим поведением:
- Если сообщение
"start"
получено, отправьте Z сообщение"stop"
- Если сообщение
- Актер Y создается со следующим поведением:
- Если сообщение
"start"
получено, отправьте Z сообщение"go"
- Если получено сообщение true , отправьте Z сообщение
"go"
- Если получено сообщение false , ничего не делать
- Если сообщение
- Актер Z создается со следующим поведением, значение счетчика
n
которого изначально равно 0 :- Если сообщение
"start"
получено, ничего не делать. - Если сообщение
"stop"
получено, то отправьте Y сообщение false и отправьте распечатайте сообщение countn
. - Если сообщение
"go"
получено, а затем отправить Y сообщение верно и обработать следующее сообщение , полученное с графомn
бытииn+1
.
- Если сообщение
По законам семантики акторов, вышеупомянутая система акторов всегда будет останавливаться, когда каждый из акторов X , Y , Z и Z отправляет "start"
сообщение, в результате чего на печать выводится число, которое может быть неограниченно большим.
Разница между программой CSP и системой Актера заключается в том, что Актер Z не получает сообщения с использованием команды защищенного выбора из нескольких каналов. Вместо этого он обрабатывает сообщения в порядке поступления, и по законам для систем stop
Акторов сообщение гарантированно прибывает.
Livelock при получении с нескольких каналов [ править ]
Рассмотрим следующую программу, написанную на CSP [Hoare 1978]:
[Bidder1 :: b: ставка; * [Bids1? B → process1! B; [] Bids2? B → process1! B;] || Bidder2 :: b: ставка; * [Bids1? B → process2! B; [] Bids2? B → process2! B;] ]
Как указано в Knabe [1992], проблема вышеупомянутого протокола ( простого распределенного протокола ) заключается в том, что процесс Bidder2
может никогда не принять заявку от Bid1
или Bid2
(явление, называемое живой блокировкой ) и, следовательно, process2
может никогда ничего не послать. При каждой попытке принять сообщение Bidder2
блокируется, потому что предложение, которое было предложено Bids1
или Bids2
отобрано им, Bidder1
потому что оказывается, что он Bidder1
имеет гораздо более быстрый доступ, чем Bidder2
к Bids1
и Bids2
. Следовательно, он Bidder1
может принять ставку, обработать ее и принять другую ставку, прежде чем Bidder2
совершить принятие ставки.
Эффективность [ править ]
Как указано в Knabe [1992], проблема с вышеупомянутым протоколом ( простой распределенный протокол ) заключается в большом количестве сообщений, которые должны быть отправлены, чтобы выполнить квитирование, чтобы отправить сообщение через синхронный канал. Действительно, как показано в предыдущем разделе ( Livelock ), количество коммуникаций может быть неограниченным.
Сводка проблем [ править ]
В подразделах выше сформулированы следующие три проблемы, связанные с использованием синхронных каналов для расчетов процессов:
- Голодание. Использование синхронных каналов может вызвать голод, когда процесс пытается получить сообщения из нескольких каналов в команде защищенного выбора.
- Livelock. Использование синхронных каналов может привести к тому, что процесс будет заблокирован в режиме реального времени, когда он попытается получить сообщения из нескольких каналов в команде защищенного выбора.
- Эффективность. Использование синхронных каналов может потребовать большого количества коммуникаций для получения сообщений из нескольких каналов в команде защищенного выбора.
Примечательно, что во всем вышеперечисленном проблемы возникают из-за использования команды защищенного выбора для получения сообщений из нескольких каналов.
Асинхронные каналы [ править ]
Асинхронные каналы обладают тем свойством, что отправителю, помещающему сообщение в канал, не нужно ждать, пока получатель выведет сообщение из канала.
Простые асинхронные каналы [ править ]
Асинхронный канал может быть смоделирован Актером, который принимает put
и get
обменивается данными. Ниже приводится поведение Актера для простого асинхронного канала:
- У каждого
put
сообщения есть сообщение и адрес, на который немедленно отправляется подтверждение (не дожидаясь полученияget
сообщения). - У каждого
get
сообщения есть адрес, на который отправляется полученное сообщение.
Асинхронные каналы в технологических вычислениях [ править ]
В языке программирования Join-Calculus (опубликованном в 1996 г.) реализованы локальные и распределенные параллельные вычисления. Он включает асинхронные каналы, а также своего рода синхронный канал, который используется для вызовов процедур. Расчет Aπ Actor Аги ( Agha and Thati 2004 ) основан на типизированной версии асинхронного π-исчисления .
Алгебры [ править ]
Использование алгебраических методов было впервые применено в процессных вычислениях. Впоследствии в ( Гаспари и Заваттаро, 1997 ), ( Гаспари и Заваттаро, 1999 ), ( Ага и Тати, 2004 ) было разработано несколько различных исчислений процессов, предназначенных для алгебраических рассуждений о системах Акторов .
Денотационная семантика [ править ]
Уилл Клинджер (основанный на работах Ирен Грейф [1975], Гордона Плоткина [1976], Генри Бейкера [1978], Майкла Смита [1978] и Франсеза, Хора , Леманна и де Ровера [1979]) опубликовал первые удовлетворительные результаты. математическая денотационная теория модели Actor с использованием теории домена в своей диссертации в 1981 г. его семантике противопоставила неограниченный недетерминизм в модели актера с ограниченным недетерминизмом из ПСА [Hoare 1978] и параллельных процессов [Милна и Милнера 1979] (см денотационной семантики). Роско [2005] разработал денотационную семантику с неограниченным недетерминизмом для последующей версии Коммуникационных последовательных процессов Hoare [1985]. Совсем недавно Карл Хьюитт [2006b] разработал денотационную семантику для Актеров, основанную на временных диаграммах .
Уго Монтанари и Кэролин Талкотт [1998] внесли свой вклад в попытку примирить Актеров с процессными вычислениями.
Ссылки [ править ]
- Карл Хьюитт, Питер Бишоп и Ричард Штайгер. Универсальный модульный актерский формализм для искусственного интеллекта IJCAI 1973.
- Робин Милнер. Процессы: математическая модель вычислительных агентов в логическом коллоквиуме 1973.
- Ирен Грейф и Карл Хьюитт. Актерская семантика конференции PLANNER-73 Запись симпозиума ACM по принципам языков программирования. Январь 1975 г.
- Ирен Грейф. Семантика параллельного общения профессоров MIT EECS Докторская диссертация. Август 1975 г.
- Гордон Плоткин. Powerdomain строительство SIAM Журнал по Компьютерной сентября 1976 года.
- Карл Хьюитт и Генри Бейкер Актеры и непрерывные функционалы Труды Рабочей конференции IFIP по формальному описанию концепций программирования. 1–5 августа 1977 г.
- Жиль Кан и Дэвид Маккуин. Сопрограммы и сети параллельных процессов ИФИП. 1977 г.
- Аки Ёнэдзава Методы спецификации и проверки параллельных программ на основе семантики передачи сообщений. Докторская диссертация MIT EECS. Декабрь 1977 г.
- Майкл Смит. Power domains Журнал компьютерных и системных наук. 1978 г.
- Джордж Милн и Робин Милнер . Параллельные процессы и их синтаксис JACM. Апрель 1979 г.
- АВТОМОБИЛЬ Хоар . Связь последовательных процессов CACM. Август 1978 г.
- Ниссим Франсез, К.А. Хор , Даниэль Леманн и Виллем де Ровер. Семантика недетермизма, параллелизма и коммуникации. Журнал компьютерных и системных наук. Декабрь 1979 г.
- Мэтью Хеннесси и Робин Милнер. О наблюдении недетерминизма и параллелизма LNCS 85. 1980.
- Уилл Клингер. Основы актерской семантики Докторская диссертация по математике Массачусетского технологического института. Июнь 1981 г.
- Мэтью Хеннесси. Терминная модель для синхронных процессов. Факультет компьютерных наук Эдинбургского университета. CSR-77-81. 1981 г.
- JA Bergstra и JW Klop. Алгебра процессов для синхронной передачи информации и управления. 1984 г.
- Лука Карделли. Модель реализации семинара по взаимодействию на рандеву по параллелизму. Конспект лекций по информатике 197. Springer-Verlag. 1985 г.
- Роберт ван Глаббек. Ограниченный недетерминизм и принцип индукции аппроксимации в симпозиуме алгебры процессов по теоретическим аспектам компьютерных наук на STACS 1987.
- К. Мани Чанди и Джаядев Мишра. Дизайн параллельных программ: Фонд Аддисон-Уэсли 1988.
- Робин Милнер, Иоахим Парроу и Дэвид Уокер. Исчисление мобильных процессов Департамент компьютерных наук, Эдинбург. Отчеты ECS-LFCS-89-85 и ECS-LFCS-89-86. Июнь 1989 г. Пересмотрено в сентябре 1990 г. и октябре 1990 г. соответственно.
- Робин Милнер. Полиадическое исчисление пи: Учебное пособие Эдинбургского университета. Отчет LFCS ECS-LFCS-91-180. 1991 г.
- Кохей Хонда и Марио Токоро. Объектное исчисление для асинхронной связи ECOOP 91.
- Хосе Месегер. Логика условного переписывания как унифицированная модель параллелизма в Избранных статьях Второго семинара по параллелизму и композиционности. 1992 г.
- Фредерик Кнабе. Распределенный протокол для связи на основе каналов с Choice PARLE 1992.
- Джефф Барретт. Справочное руководство Occam 3 INMOS. 1992 г.
- Бенджамин Пирс, Дидье Реми и Дэвид Тернер. Типизированный язык программирования высшего порядка, основанный на семинаре по исчислению пи по теории типов и ее применению в компьютерных системах. Киотский университет. Июль 1993 г.
- Милнер, Робин (январь 1993), «Элементы взаимодействия: Тьюринг лекции», коммуникации АСМА , ЦАОР, 36 : 78-89, DOI : 10,1145 / 151233,151240 CS1 maint: обескураженный параметр ( ссылка ).
- Р. Амадио и С. Прасад. Места и неудачи Конференция "Основы программных технологий и теоретической информатики". 1994 г.
- Седрик Фурне и Жорж Гонтье. Рефлексивная химическая абстрактная машина и объединенное исчисление POPL 1996.
- Седрик Фурне, Жорж Гонтье, Жан-Жак Леви, Люк Маранге и Дидье Реми. Расчет мобильных агентов CONCUR 1996.
- Тацуро Сэкигути и Акинори Ёнэдзава . Исчисление с кодом мобильности FMOODS 1997.
- Гаспари, Мауро; Заваттаро, Джанлуиджи (май 1997 г.), Алгебра актеров (технический отчет), Болонский университет
- Лука Карделли и Эндрю Гордон (1998), Морис Нива (редактор), «Мобильные окружающие среды», Основы науки о программном обеспечении и вычислительных структур , Лекционные заметки по компьютерным наукам, Springer, 1378
- Уго Монтанари и Кэролайн Талкотт. Могут ли актеры и пи-агенты жить вместе? Электронные заметки по теоретической информатике. 1998 г.
- Робин Милнер. Коммуникационные и мобильные системы: Pi-Calculus Cambridge University Press. 1999 г.
- М. Гаспари и Г. Заваттаро (1999), «Алгебра акторов», формальные методы для открытых объектно-ориентированных систем : 3–18, DOI : 10.1007 / 978-0-387-35562-7_2 , ISBN 978-1-4757-5266-3
- Давиде Санджорджи и Дэвид Уокер. Пи-исчисление: теория мобильных процессов Cambridge University Press. 2001 г.
- П. Тати, Р. Зиаи и Г. Ага. Теория майского тестирования для асинхронных вычислений с локальностью и без названия, совпадающей с алгебраической методологией и программными технологиями. Springer Verlag. Сентябрь 2002 г. LNCS 2422.
- Гул Ага и Прасанна Тати (2004), «Алгебраическая теория актеров и ее приложение к простому объектно-ориентированному языку» (PDF) , OO to FM (Dahl Festschrift) LNCS , Springer-Verlag, 2635 , заархивировано из оригинала ( PDF) от 20 апреля 2004 г. , дата обращения 15 декабря 2005 г.
- JCM Baeten, T. Basten и MA Reniers. Алгебра коммуникативных процессов Cambridge University Press. 2005 г.
- Хэ Цзифэн и ЦАР Хоар. Связывание теорий параллелизма Международный институт программных технологий Университета Организации Объединенных Наций Отчет UNU-IIST № 328. Июль 2005 г.
- Лука Ачето и Эндрю Д. Гордон (редакторы). Алгебраические вычисления процесса: первые двадцать пять лет и за его пределами. Алгебра процессов. Бертиноро, Форли, Италия, 1–5 августа 2005 г.
- Роско, AW (2005), Теория и практика параллелизма , Prentice Hall , ISBN 978-0-13-674409-2 CS1 maint: не рекомендуется параметр ( ссылка ) CS1 maint: ref дублирует значение по умолчанию ( ссылка )
- Карл Хьюитт (2006b) Что такое приверженность? Физическая, организационная и социальная сфера COIN @ AAMAS. 2006 г.