Aktyor modelini amalga oshirish - Actor model implementation

Yilda Kompyuter fanlari, Aktyor modelini amalga oshirish amalga oshirish masalalariga tegishli Aktyor modeli.

Kosmik kub

The Caltech kosmik kubi Chak Zayts tomonidan ishlab chiqilgan va boshq. Caltech-da Actor tizimlari uchun me'moriy yordamni taqdim etadi. Cosmic Cube va boshqa parallel protsessorlarning muhim farqi shundaki, bu bir nechta instruktivli ma'lumotlar uzatish moslamasi bir vaqtning o'zida aloqa qilish uchun umumiy o'zgaruvchilar o'rniga xabar uzatishni ishlatadi. Ushbu hisoblash modeli apparat tuzilmasi va operatsion tizimida aks ettirilgan, shuningdek, dasturchi tomonidan ko'rilgan aniq xabar uzatuvchi aloqa hisoblanadi. Seits [1985] ga ko'ra:

Bu kosmik kub eksperimentining asosiy sharti edi, chunki internod aloqasi juda ko'p sonli tugunlarga qadar kengayishi kerak edi. A to'g'ridan-to'g'ri Hiperküp kabi tarmoq ko'plab bir vaqtda aloqa kanallarida erishilgan umumiy tarmoqli kengligi va amalga oshirishning maqsadga muvofiqligi nuqtai nazaridan ushbu talabni qondiradi. The giperkub aslida an ning taqsimlangan variantidir bilvosita Omega yoki kabi logaritmik kommutatsiya tarmog'i banyan tarmoqlar: umumiy saqlash tashkilotlarida ishlatilishi mumkin bo'lgan tur. Biroq, giperkub bilan aloqa yo'llari har xil miqdordagi kanallarni bosib o'tadi va shuning uchun har xil kechikishlarni namoyish etadi. Shu sababli, jarayonlarni tugunlarga joylashtirishda aloqa joyidan foydalanish mumkin.

J - mashina

The J - mashina tomonidan ishlab chiqilgan Bill Dally va boshq. MIT-da aktyorlar uchun mos me'moriy yordamni taqdim etadi, bunga quyidagilar kiradi:

  • Asenkron xabarlar
  • Aktyor qabul qiluvchining mahalliy yoki mahalliy bo'lmaganligidan qat'i nazar, bir vaqtning o'zida xabarlar yuborilishi mumkin bo'lgan Aktyorning yagona maydoni.
  • Aktyor truboprovodining bir shakli (qarang Aktyor modeli )

Parallel Smalltalk (bu yordamida modellashtirish mumkin Aktyorlar ) J Machine dasturlash uchun ishlab chiqilgan.

Prototip aktyor dasturlash tili

Hewitt [2006] aktyor dasturlash tilining prototipini taqdim etdi, chunki u to'g'ridan-to'g'ri aktyorlarning xatti-harakatlarining muhim jihatlarini ifoda etadi. Xatlar XML-da notalar yordamida ifodalanadi.: [1 ... uchun ]

"<" ">" 1 ... n "<" / ">"

Dasturlash tilining semantikasi har bir dastur konstruktsiyasini o'ziga xos xulq-atvorga ega aktyor sifatida belgilash bilan belgilanadi. Ijro etilish paytida dastur konstruktsiyalari orasida Eval xabarlari o'tkazilishi bilan modellashtirilgan.

Atrof-muhit aktyorlari

Har biri Baho xabarda dastur identifikatorlarini bog'laydigan muhit sifatida ishlaydigan aktyor manzili mavjud. Atrof-muhit aktyorlari o'zgarmasdir, ya'ni ular o'zgarmaydi So'rov [Bind [identifikator qiymati] mijoz] aktyorlik muhiti tomonidan qabul qilingan bo'lsa, aktyor yangi muhit yaratiladi, shunday qilib aktyor oladigan yangi muhit paydo bo'ladiSo'rov [Izlash [identifikatori]] mijoz ’] keyin agar identifikator bilan bir xil identifikator ' yuborish mijoz ' Qaytgan [qiymat], aks holda yuboring EnvironmentRequest [Izlash [identifikatori]] mijoz ’].Ushbu narsa aktyorga asoslanadi EmptyEn Environment qachon oladi So'rov [Izlash [identifikator] mijoz], yuboradi mijoz Tashlandi [NotFound [identifikator]].Qachon u qabul qilsa Bog'lash so'rov EmptyEn Environment kabi harakat qiladi Atrof muhit yuqorida.

Ifodalar

Dasturlash prototipi tili quyidagi turlarga ega:

<identifier>
Qachon So'rov [Mijozni baholash [muhit] qabul qilindi, yuboring atrof-muhit So'rov [Izlash [] mijoz]
yuborish <recipient> <communication>
Qachon So'rov [Mijozni baholash [muhit] qabul qilindi, yuboring <recipient> So'rov [Eval [muhit] evalCustomer1] qayerda evalCustomer1 bu yangi aktyor
qachon evalCustomer1 aloqa oladi Qaytdi [theRecipient], keyin yuboring <communication>
So'rov [Eval [muhit] evalCustomer2] qayerda evalCustomer2 yangi aktyor
qachon evalCustomer2 aloqa oladi Qaytdi [theCommunication], keyin yuboring Qabul qiluvchi aloqa.
<recipient>.<message>
Qachon So'rov [Mijozni baholash [muhit] qabul qilindi, yuboring <recipient> So'rov [Eval [muhit] evalCustomer1] shu kabi
qachon evalCustomer1 aloqa oladi Qaytdi [theRecipient], keyin yuboring <message> So'rov [Eval [muhit] evalCustomer2] shu kabi
qachon evalCustomer2 aloqa oladi Qaytdi [theMessage], keyin yuboring Qabul qiluvchi
So'rov [theMessage mijozi]
qabul qiluvchi ... men <expression>men ...
Qachon So'rov [Mijozni baholash [muhit] qabul qilindi, yuboring mijoz yangi aktyor qabul qiluvchi shu kabi
qachon qabul qiluvchi aloqa oladi com, keyin yangisini yarating majburiy mijoz va atrofni yuborish
So'rov [Bind [men com] bindingCustomer] va
agar majburiy mijoz qabul qiladi Qaytgan [muhit ’], yuboring <expression>men
So'rov [Eval [muhit ’]]
aks holda, agar majburiy mijoz qabul qiladi Tashlangan [...], harakat qilib ko'ring <pattern>i + 1
xulq-atvor ... men <expression>men ...
Qachon So'rov [Mijozni baholash [muhit] qabul qilindi, mijozga yangi aktyorni yuboring qabul qiluvchi shu kabi
qachon qabul qiluvchi qabul qiladi So'rov [mijozga xabar yuborish]], keyin yangisini yarating majburiy mijoz va yuboring atrof-muhit
So'rov [bog'lash [men xabar] mijoz ’] va
  1. agar majburiy mijoz qabul qiladi Qaytgan [muhit ’], yuboring <expression>men
    So'rov [Eval [muhit ’] mijoz’]
  2. aks holda, agar majburiy mijoz qabul qiladi Tashlangan [...], harakat qilib ko'ring <pattern>i + 1
{1, 2}
Qachon So'rov [Mijozni baholash [muhit] qabul qilindi, yuboring <expression>1 So'rov [Eval [muhit]] va bir vaqtning o'zida yuboring <expression>2 Talab qiling [Eval [muhit]] mijoz].
ruxsat bering <identifier> = <expression>qiymat yilda <expression>tanasi
Qachon xabar [Eval [muhit] mijoz] qabul qilindi, keyin yangisini yarating evalCustomer va yuboring <expression>qiymat
So'rov [Eval [muhit] evalCustomer1.
Qachon evalCustomer qabul qiladi Qaytdi [qiymat], yangisini yarating majburiy mijoz va yuboring atrof-muhit
So'rov [bind [ theValue] bindingCustomer]
Qachon majburiy mijoz qabul qiladi Qaytgan [muhit ’], yuboring <expression>tanasi So'rov [Eval [muhit ’] mijoz]
serializer <expression>
Qachon So'rov [Mijozni baholash [muhit] qabul qilindi, keyin yuboring mijoz Qaytdi [theSerializer] qayerda theserializer aloqa operatorlari yuboradigan yangi aktyor theserializer FIFO tartibida dastlab amaldagi aktyor bilan ishlov beriladi .Eval [muhit] va
Muloqot paytida com tomonidan qabul qilinadi theserializer, keyin xulq-atvor aktyorini yuboring So'rov [com mijoz ’] qayerda mijoz ' yangi aktyor
qachon mijoz ' qabul qiladi Qaytdi [theNextBehavior] keyin KeyingiBehavior tomonidan qabul qilingan keyingi aloqa uchun xulq-atvor aktyori sifatida ishlatiladi theserializer.

Namunaviy dastur

Har qanday Actor manzilini o'z ichiga olishi mumkin bo'lgan oddiy xotira xujayrasi uchun dastur quyidagicha:

Hujayra ≡
qabul qiluvchi
So'rov [Mijozni yaratish [boshlang'ich]]
yuborish mijoz qaytdi [serializer ReadWrite (boshlang'ich)]

Saqlash xujayrasini yaratadigan yuqoridagi dastur ReadWrite xatti-harakatlaridan foydalanadi, bu quyidagicha aniqlanadi:

ReadWrite (tarkib) ≡
xulq-atvor
So'rov [o'qing [] mijoz]
{yuborish mijoz qaytdi [tarkib], ReadWrite (tarkib)}
So'rov [mijozga yozish [x]]
{yuborish mijoz qaytdi [], ReadWrite (x)}

E'tibor bering, yuqoridagi xatti-harakatlar quvur liniyasida joylashgan, ya'ni xatti-harakatlar oldingi o'qish yoki yozish xabarlarini keyingi o'qish yoki yozish xabarlarini qayta ishlash paytida qayta ishlashda davom etishi mumkin ... Masalan, quyidagi ibora boshlang'ich tarkibi 5 bo'lgan x katakchani hosil qiladi va keyin 5 unga bir vaqtning o'zida 7 va 9 qiymatlari bilan yozadi.

ruxsat bering x = Cell.Create [5] yilda {x.write [7], x.write [9], x.read []}

Yuqoridagi ifodaning qiymati 5, 7 yoki 9 ga teng.

Shuningdek qarang

Adabiyotlar

  • Genri Beyker va Carl Hewitt Jarayonlarni ko'paytiradigan axlat yig'ish Sun'iy intellektni dasturlash tillari bo'yicha simpozium materiallari to'plami. SIGPLAN xabarnomalari 1977 yil 12-avgust.
  • Piter Bishop Modulli ravishda kengaytiriladigan kompyuter tizimlari uchun juda katta manzil maydoni MIT EECS doktorlik dissertatsiyasi. 1977 yil iyun.
  • Genri Beyker. Haqiqiy vaqtda hisoblash uchun aktyor tizimlari MIT EECS doktorlik dissertatsiyasi. 1978 yil yanvar.
  • Karl Xevitt va Rass Atkinson. Serializatorlar uchun spetsifikatsiya va isbotlash usullari Dasturiy ta'minot muhandisligi bo'yicha IEEE jurnali. 1979 yil yanvar.
  • Ken Kan. Animatsiyaning hisoblash nazariyasi MIT EECS doktorlik dissertatsiyasi. 1979 yil avgust.
  • Karl Xevitt, Beppe Attardi va Genri Liberman. Xabarlarni yuborishda delegatsiya Tarqatilgan tizimlar bo'yicha birinchi xalqaro konferentsiya materiallari Hantsvill, AL. 1979 yil oktyabr.
  • Bill Kornfeld va Karl Xevitt. Ilmiy jamoat metaforasi IEEE tizimlari, inson va kibernetika bo'yicha operatsiyalar. 1981 yil yanvar.
  • Genri Liberman. Bir vaqtning o'zida ko'p narsalarni chalkashtirmasdan o'ylash: 1-harakatdagi parallellik MIT AI memo 626. 1981 yil may.
  • Genri Liberman. 1-aktni oldindan ko'rish MIT AI memo 625. iyun 1981 yil.
  • Bill Kornfeld. Muammoni hal qilishda parallellik MIT EECS doktorlik dissertatsiyasi. 1981 yil avgust.
  • Daniel Theriault. Act-1 tili uchun primer MIT AI memo 672. 1982 yil aprel.
  • Genri Liberman va Karl Xevitt. Ob'ektlarning umr ko'rish vaqtiga asoslangan haqiqiy vaqtdagi axlat yig'uvchi CACM 1983 yil iyun.
  • Daniel Theriault. 2-aktni ishlab chiqish va amalga oshirish masalalari MIT AI texnik hisoboti 728. 1983 yil iyun.
  • Genri Liberman. Asalarichilik uchun ob'ektga yo'naltirilgan simulyator Sun'iy intellekt bo'yicha Amerika assotsiatsiyasi konferentsiyasi, Vashington, D.C., 1983 yil avgust.
  • Karl Xevitt va Genri Liberman. Sun'iy intellekt uchun parallel arxitekturadagi dizayn masalalari MIT AI memo 750. 1983 yil noyabr.
  • Charlz Zayts. Kosmik kub CACM. 1985 yil yanvar.
  • Karl Manning. Sayohatchi: Aktyor rasadxonasi ECOOP 1987. Shuningdek, Informatika bo'yicha ma'ruza yozuvlarida, vol. 276.
  • Karl Manning,. Acore: asosiy aktyor tilining dizayni va uning kompilyatsiyasi Magistrlar. MIT EECS. Maiy 1987 yil.
  • Uilyam Atas va Charlz Zayts Multikompyuterlar: xabarlarni uzatuvchi bir vaqtda ishlaydigan kompyuterlar IEEE Computer 1988 yil avgust.
  • Uilyam Atas va Nanette Boden Kantor: Ilmiy hisoblash uchun aktyor dasturlash tizimi Ob'ektga asoslangan bir vaqtda dasturlash bo'yicha NSF seminarining materiallari. 1988. SIGPLAN xabarnomalarining maxsus soni.
  • Jan-Per Briot. Ob'ektlardan aktyorlarga: Smalltalk-80-da cheklangan simbiozni o'rganish Rapport de Recherche 88-58, RXF-LITP, Parij, Frantsiya, 1988 yil sentyabr
  • Uilyam Deyli va Uills, D. Paralellikning universal mexanizmlari PARLE ‘89.
  • V. Xorvat, A. Chien va V. Dalli. CST bilan ishlash tajribasi: dasturlash va amalga oshirish PLDI. 1989 yil.
  • Akinori Yonezava, Ed. ABCL: Ob'ektga yo'naltirilgan bir vaqtda tizim MIT Press. 1990 yil.
  • Karl Xevitt va Gul Og'a. Himoyalangan shoxning so'zlashuv tillari: ular deduktiv va mantiqiymi? MIT da sun'iy intellektda, Vol. 2. MIT Press 1991 yil.
  • Carl Hewitt va Jeff Inman. DAI Betwixt va Between: "Aqlli agentlar" dan "Ochiq tizimlar ilmi" ga IEEE tizimlari, inson va kibernetika bo'yicha operatsiyalar. Noyabr / Dek. 1991 yil.
  • Uilyam Deyli, va boshq. Xabarga asoslangan protsessor: samarali mexanizmlarga ega bo'lgan ko'pkompyuterli ishlov berish tuguni IEEE Micro. 1992 yil aprel.
  • Don Box, Devid Ehnebuske, Gopal Kakivaya, Endryu Layman, Nuh Mendelson, Henrik Nilsen, Satish Tett, Deyv Ueyn. Oddiy ob'ektlarga kirish protokoli (SOAP) 1.1 W3C eslatmasi. 2000 yil may.
  • Edvard A. Li va Stiven Noyendorffer (2004 yil iyun). "Aktyorga yo'naltirilgan dizayndagi sinflar va kichik sinflar". Ph.D. Dissertatsiya - qisqartirilgan referat. Kodlar uchun rasmiy usullar va modellar bo'yicha konferentsiya (MEMOCODE). CiteSeerX  10.1.1.9.6762. Iqtibos jurnali talab qiladi | jurnal = (Yordam bering)
  • Karl Xewitt. Mantiqiy dasturlashning takroran yo'q bo'lib ketishi va nima uchun u reenkarnatsiya qilinadi Nimaga noto'g'ri yo'l qo'yildi va nima uchun: AI tadqiqotlari va qo'llanilishidan olingan darslar. SS-06-08 texnik hisoboti. AAAI Press. 2006 yil mart.