| Actor Model And Process Calculi History |
Article Index for Actor Model |
Website Links For Actor |
Information AboutActor Model And Process Calculi History |
| CATEGORIES ABOUT ACTOR MODEL AND PROCESS CALCULI HISTORY | |
| actor model | |
| history | |
| process calculi | |
|
EARLY DEVELOPMENT OF THE ACTOR MODEL The Actor Model , first published in ''et, al'' 1973 , is a mathematical model of Concurrent Computation . The Actor model treats “Actors” as the universal primitives of concurrent digital computation: in response to a message that it receives, an Actor can make local decisions, create more Actors, send more messages, and determine how to respond to the next message received. No buffering Messages in the Actor model are not necessarily buffered which was a sharp break with previous approaches to models of concurrent computation. The lack of buffering caused a great deal of misunderstanding at the time of the development of the Actor model and is still a controversial issue. Some researchers argued that the messages are buffered in the "ether" or the "environment". However, the "ether" doesn't make a very good buffer. Messages ''put'' in the Ether don't stay until they are ''gotten''! Also messages in the Actor model are simply sent (like Packets in IP ) there is no requirement for a synchronous handshake with the recipient of the message. Dynamic topology A natural development of the Actor model was to allow addresses in messages. Influenced by Packet Switched Networks and 1964 , Hewitt proposed the development of a new model of concurrent computation in which communications would not have any required fields at all: they could be empty. Of course, if the sender of a communication desired a recipient to have access to addresses which the recipient did not already have, the address would have to be sent in the communication. A computation might need to send a message to a recipient from which it would later receive a response. The way to do this is to send a communication which has the message along with the address of another Actor called the ''resumption'' (sometimes also called Continuation or Stack Frame ) along with the message. The recipient could then cause a response message to be sent to the resumption. Actor creation plus the inclusion of the addresses of Actors in messages means that Actors have a potentially variable topology in their relationship to one another much as the objects in Simula also had a variable topology in their relationship to one another. Arrival ordering not necessarily same as sending order Hewitt argued against making the requirement messages must arrive in the order that they are sent a requirement of the Actor model. If output message ordering is desired then it can be modeled by a queue Actor that provides this functionality. Such a queue Actor would queue the messages that arrived so that they could be retrieved in FIFO order. So if an Actor X sent a message M1 to an Actor Y and in response to a subsequent message that X received, it sent another message M2 to Y, there is no requirement that M1 arrives at Y before M2. In this respect the Actor model mirrors Packet Switching systems which do not guarantee that packets must be received in the order sent. Not providing the order of delivery guarantee allows packet switching to buffer packets, use multiple paths to send packets, resend damaged packets, and to provide other optimizations. For example, Actors are allowed to pipeline the processing of messages. What this means is that in the course of processing a message M1, an Actor can designate the behavior to be used to process the next message, and then in fact begin processing another message M2 before it has finished processing M1. Just because an Actor is allowed to pipeline the processing of messages does not mean that it ''must'' pipeline the processing. Whether a message is pipelined is an engineering tradeoff. How would an external observer know whether the processing of a message by an Actor has been pipelined? There is no ambiguity in the definition of an Actor created by the possibility of pipelining. Of course, it is possible to perform the pipeline optimization incorrectly in some implementations, in which case unexpected behavior may occur. Milner's early publications As opposed to the previous approach based on composing sequential processes, the Actor model was developed as an inherently concurrent model. In the Actor model sequentiality was a special case that derived from concurrent computation as explained in Actor Model Theory . Robin Milner 's {Link without Title} initial published work on concurrency was also notable in that it was not based on composing sequential processes. His work differed from the Actor model because it was based on a fixed number of processes of fixed topology communicating using synchronous buffered communication. Hoare's early publications The original Communicating Sequential Processes model published by Tony Hoare {Link without Title} differed from the Actor model because it was based on the parallel composition of a fixed number of sequential processes of fixed topology communicating using synchronous buffered communication. These early models by Milner and Hoare both had the property of bounded nondeterminism as opposed to the Unbounded Nondeterminism in the Actor model. PROCESS CALCULI AND ACTOR MODEL Milner, ''et. al.'' In his Turing lecture , Milner remarked as follows: :Now, the pure lambda-calclus is built with just two kinds of thing: ''terms'' and ''variables''. Can we achieve the same economy for a process calculus? Carl Hewitt, with his Actors model, responded to this challenge long ago; he declared that a value, an operator on values, and a process should all be the same kind of thing: an ''Actor''. This goal impressed me, because it implies the homogeneity and completeness of expession ... But it was long before I could see how to attain the goal in terms of an algebraic calculus...So, in the spirit of Hewitt, our first step is to demand that all things denoted by terms or accessed by names--values, registers, operators, processes, objects--are all of the same kind of thing; they should ''all'' be processes. Thereafter we regard access-by-name as the raw material of computation... Hoare, ''et. al.'' Tony Hoare , Stephen Brookes , and A. W. Roscoe {Link without Title} developed and refined the ''theory'' of CSP into its modern form. The approach taken in developing the theoretical version of CSP was heavily influenced by Robin Milner 's work on the Calculus Of Communicating Systems (CCS), and vice versa. Over the years there have been many fruitful exchanges of ideas between the researchers working on both CSP and CCS. Further Coevolution The (see Actor Model And Process Calculi ). Although algebraic laws have been developed for the Actor model, they do not capture the crucial property of guaranteed of delivery of messages sent to Serializers. For example see the following:
REFERENCES
|
|
|