Communicating Sequential Processes
Communicating Sequential Processes ( CSP ) is a process algebra developed by Tony Hoare at Oxford University to describe the interaction between communicating processes . The idea was first presented as an imperative language by Tony Hoare in 1978, then expanded by him into a formal algebra and made famous in 1985 with the publication of the book of the same name, Communicating Sequential Processes . According to CiteSeer, this book was the third most cited work in computer science in 2003 .
To distinguish it from the original imperative language CSP, the process algebra is also sometimes referred to as Theoretical Communicating Sequential Processes ( TCSP ).
Applications
The programming languages Go and Occam contain practical implementations of the CSP. JCSP (Communicating Sequential Processes for Java) is the combination of CSP and Occam concepts in a Java - API . A corresponding implementation for C ++ is available with C ++ CSP2 . Other applications are the Message Passing Interface and the Parallel Virtual Machine .
Extract from the syntax and semantics
- CSP uses upper case letters for states of the machine and lower case letters for events . The state transitions triggered by events are indicated by an arrow (→).
-
(x → B)
The event x is followed by state B -
(x → y → B)
The sequence of events x and then y is followed by state B
-
- In CSP, conditional events are indicated by specifying the selection operator | Are defined.
-
(x → A | y → B)
If event x, then state A. If event y, then state B
-
- The set of states and events that an automaton defined via CSP accepts is indicated by the alphabet αP. Each machine contains an additional STOP state in αP, from which a further state transition is no longer permitted by definition.
- Sequential composition is made possible by the introduction of intermediate states.
-
P = (x → A), A = (y → B)
is equivalent to P = (x → y → B)
-
- The parallel connection of processes, which gave this process algebra its name, is indicated by the symbol || reached.
-
P = (a → (b → P | x → b → P))
with αP = {a, b, x} -
Q = (a → b → Q | y → b → Q)
with αQ = {a, b, y} -
P || Q
accepts all strings {ab, axb, yb} and any sequential combination
-
-
Recursions are possible.
-
P = (x → y → P)
generates the infinite sequence of events xyxyxy ...
-
Web links
Individual evidence
- ↑ CiteSeer Statistics
- ↑ Google Go package csp. Retrieved June 26, 2019 .