WoTUG - The place for concurrent processes


Communicating Sequential Processes, or CSP, is a formal language used to describe parallel systems created by C. A. R. ("Tony") Hoare in the early 1980's and described in his book "Communicating Sequential Processes", published by Prentice-Hall, 1985

CSP describes processes in terms of entities (processes) which interact using events (which can be thought of as messages). It is an important part of CSP that if you hide the interactions between a group of processes, but not the interactions between that group and the "rest of the world" (the environment), that you end up with another process. That is, processes compose.

The representation has two halves: processes can be described in terms of the events they may participate in, and groups of processes can be described in terms of the traces of events which they did participate in. For example, a vending machine which accepts a coin, then delivers some tea, then returns to its previous state may be described by:

VM = coin -> tea -> VM

while the traces of VM are:

< coin, tea >
< coin, tea, coin, tea >
< coin, tea, coin, tea, coin, tea >

Much work has been done since the original paper. CSP has been successfully used as the basis for the programing language occam, and in recent years has been extended into a wider domain, for example to address tasks in hardware codesign:

TCSP - Steve Schneider, University of London

Introduced a treatment of time into CSP. Steve has recently completed a book on timed and untimed CSP.
Note: this should not be constituted as a review or endorsement of this book.

CSPP - A. Lawrence, Loughborough University

Introduced priority into CSP, which is useful when describing resource-limited systems. CSPP is described in detail in Dr Lawrence's paper (info, PDF), in the WoTUG paper database.

HCSP - A. Lawrence, Loughborough University

Extends the priority model in CSPP and includes new synchronisation primitives and a modelling of state. It is useful when describing hardware systems where state & clocks etc. are unavoidable. CSPP is described in detail in Dr Lawrence's paper (info, PDF), in the WoTUG paper database.

CSP Links

There is a CSP Archive maintained at the Oxford University Programming Laboratory, which is worth investigating.

The Links page contains several other CSP resource links.

Page last modified on 11th July 2003
Pages © WoTUG, or the indicated author. All Rights Reserved.
Comments on these web pages should be addressed to: www at wotug.org