Actor model Novotný Marek Svata Bohuslav Lhotan Petr
O čem to bude Úvod - Historie - Modely předcházející Actor modelu - Základy Actor modelu Formální systémy Využití Actor modelu Bob1 Bob2 Bob3 Petr 1 Petr 2 Petr 3 2
Historie r.1973 Carl Hewitt, Peter Bishop a Richard Steiger publikace návrhu r dostává softwarovou podobu na MIT (Massachusetts Institute of Technology)Massachusetts Institute of Technology Inspirace ve Fyzikálních zákonech Ovlivněný programovacími jazyky Lisp, Simula, a jednou z prvních verzí Smalltalku Vytvářen s vidinou „možnst paralelního zpracovávání výpočtů tísícovkami mikroprocesorů“ 3
Předcházející modely Lambda Calculus - pro matematické učely (definice funkcí, rekurze) Simula (1. OOP jazyk) - objekty, třídy, metody, garbage collection Smalltalk - přebírá od Simuly - primitivní datové typy jako objekty Petri nets 4
Základy Actor modelu Přebírá filozofii „Všechno je Actor“ podobně jako u OOP „Všechno je Objekt“ Actor je „výpočetní“ entita, která může jako odpověď na přijatou zprávu - posílat určitý počet zprávy ostatním Actorům - vytvářet určitý počet nových Actorů - stanovit reakci která se má použít při příští přijaté zprávě Není žádná sekvence podle které se to uskutečňuje. Komunikace probíhá asynchronně. Souběžné „provádění“ během komunikování a dynamického vytváření Actorů. 5
Formální systémy Operational semantics - pro programovací jazyky popisuje jak jsou programy interpretovány jako sekvence výpočetních operací Laws for Actor systems Denotational semantics - přístup k formalizování významu programovacích jazyků vytvářením matematických objektů, které vyjadřují význam výrazů z jazyků. - počítačový program jako funkce, která „mapuje“ vstup na výstup Transition semantics 6
Využití Actor modelu Actor model může být používán jako framework pro modelování a pochopení konkurenčních systémů. Elektronická pošta - Actor je ový účet - Adresa je ová adresa Webové služby se SOAP Objekty se „zámky“ (např. Java,C#) kontrolující přístup pomocí vláken k objektu. Synchronizační mechanismus. Matematické modely 7
Komunikace Vychází z paketových sítí Přímá - Funguje bez bufferu / enviroment buffer Asynchronní - Nevyžaduje handshake Lokální
Komunikace Podobnost s IP pakety Actors mají adresy Adresy lze vkládat do vytvářených Actors Adresy posílány ve zprávách Odpověď je přímá nebo skrze prostředníka (resumption)
Komunikace Podobnost s IP pakety Pseudo packet switching zprávy mohou putovat různými cestami při neuspěchu doručení je zpráva zaslána znovu není zajištěno pořadí zpráv (přijaty v jiném než odeslány)
Komunikace Lokálnost Významná vlastnost actor modelu Actor může posílat zprávy pouze na známé adresy : – vložené při jeho vytvoření – zná ze zpracování předchozích zpráv – které přijal ve zprávě – adresy Actors, které sám vytvořil
Komunikace zpráva může upravovat chování příjemce může být využit pipelining zpracovávání zpráv Variabilní topologie vytváření Actors adresy ve zprávách Bezpečnost Adresu Actora lze odvodit šifrování // dodatečné úpravy + unbounded nondeterminism
Příklad PING PONG Definování zpráv posílaných aktéry case object Ping case object Pong case object Stop
Ping Pong V š e potřebn é v bal í čku scala.actors import scala.actors.Actor import scala.actors.Actor._
Ping Pong
object pingpong extends Application { val pong = new Pong val ping = new Ping(100000, pong) ping.start pong.start }
Ping Pong $ scalac pingpong.scala $ scala -cp. examples.actors.pingpong Pong: ping 0 Ping: pong Pong: ping 1000 Ping: pong Pong: ping Ping: stop Pong: stop
Testy výkonnosti
Zdroje al.html d.pdf