Google
 
   
Login
Username:

Password:


Lost Password?

Register now!
Search
Main Menu
top books
Polls
What do you think about php-deluxe.net?
Excellent!
Cool
Hmm..not bad
What the hell is this?
encyclopedia
recommendation
compare webbrowser
Freenet DSL
Who's Online
9 user(s) are online (9 user(s) are browsing encyclopedia)

Members: 0
Guests: 9

more...
browser tip
Unix Befehle
manual of unix befehle
recommendation!
Sponsored
partner

Communicating sequential processes

In computer science, Communicating Sequential Processes (CSP) is a formal Language for describing pattern of interaction. First described in a paper by C. A. R. Hoare in 1978, the basic ideas in that paper were refined into the book “Communicating Sequential Processes” which was published in 1985. See unbounded nondeterminism and process calculi for discussion of issues in the semantics of CSP.

As its name suggests, CSP allows us to describe systems as a number of (parallel) component (processes) that operate independently and communicate with each other solely over well-defined channel. CSP introduces a Process algebra which is used to describe a process communications with its Environment#Computer science and informatics.

a -> P is the process which is willing to communicate a with its environment and after a, behaves like the process P.

STOP represents the process which can communicate nothing. It is also called deadlock.

P [] Q is the process which is willing to communicate the first events of P or of Q and then behaves accordingly. This represents deterministic choice – the environment chooses which events are done.

P |~| Q can behave like either P or Q. It can refuse to accept the first events of P or of Q and is only obliged to communicate if the environment offers both. This represents nondeterministic choice – the process can choose which events should be done. Nondeterminism can be introduced by a seemingly deterministic process as in the following:

:(a -> a -> STOP) [] (a -> b -> STOP) = a ->

To give the archetypal CSP example; an abstract representation of a chocolate machine might be able to carry out two different event, “coin” and “choc” which represent the insertion of payment and the delivery of a chocolate respectively. A machine which demanded payment before offering a chocolate could be written as:

:coin -> choc -> STOP

A person who might choose to use a coin or card could be modelled as:

:(coin -> STOP) [] (card -> STOP)

These two processes can be put in parallel, the resulting processes depending on the events they must synchronise on. If this was both “coin” and “card”, the resulting process would be:

:coin -> choc -> STOP

whereas if synchronization was only required on “coin”, the resulting process would be:

:(coin -> choc -> STOP) [] (card ->STOP)

Events can be abstracted in CSP by various mechanisms such as hiding events and renaming events. If we hide the “coin” and “card” events from the second of the combined processes, we get the nondeterministic process:

:(choc -> STOP) |~| STOP

This is a process which either offers a “choc” event and then stops, or just stops. In other words, if we treat the abstraction as an external view of the system (e.g., someone who does not see the decision reached by the person), nondeterminism has been introduced.

=See also=

  • Occam programming language is a practical implementation of CSP as a programming language.
  • JCSP is a binding of CSP & Occam concepts in a Java programming language thread support API.
  • Linda (coordination language)
  • MPI
  • PVM
  • Calculus of Communicating Systems
  • Calculus of Broadcasting Systems
  • Formal methods
  • Formal specification
  • Process calculi
  • Specification language
  • =References=

  • and the new edition is available for download as a PDF file at the [http://www.usingcsp.com/ Using CSP] website.
  • , ISBN 0-13-674409-5. Some links relating to this book are available [http://web.comlab.ox.ac.uk/oucl/publications/books/concurrency/ here]. The full text is available for download as a [http://web.comlab.ox.ac.uk/oucl/work/bill.roscoe/publications/68b.ps PS] or [http://web.comlab.ox.ac.uk/oucl/work/bill.roscoe/publications/68b.pdf PDF] file from Bill Roscoe s [http://web.comlab.ox.ac.uk/oucl/work/bill.roscoe/pubs.html list] of academic publications.
  • , ISBN 0-201-35752-6.
  • Luca Aceto and Andrew D. Gordon (editors). Algebraic Process Calculi: The First Twenty Five Years and Beyond Process Algebra. Bertinoro, Forl`, Italy, August 15, 2005
  • Stephen Brooke. Retracing CSP in Algebraic Process Calculi: The First Twenty Five Years and Beyond. August 2005.
  • Tony Hoare. Why Ever CSP in Algebraic Process Calculi: The First Twenty Five Years and Beyond. August 2005.
  • =External links=

  • [http://vl.fmnet.info/csp/ The CSP Archive]
  • [http://www.wotug.org/ WoTUG], the World Occam and Transputer User Group website contains some information about CSP and useful links.
  • [http://www.fsel.com/ Formal Systems] develop CSP tools, some of which are freely downloadable.
  • [http://www.cs.kent.ac.uk/research/groups/crg/research_interests.html Concurrency Research Group]
  • [http://citeseer.org/csq=Communicating+and+Sequential+and+Processes Citations from CiteSeer]