Pipe-calculus: Difference between revisions

Line 128: Line 128:
| <math>\rhd</math>          || Pipe                    || right || lowest
| <math>\rhd</math>          || Pipe                    || right || lowest
|}
|}
== Connections with other fields ==
=== Process calculus ===
Process calculi (or process algebras) is an approach for formally modeling concurrent systems. ''Process'' refers to the behavior of a system. The word ''algebra'' denotes an algebraic approach in talking about behavior, while the word ''calculus'' emphasizes the computational aspect of processes.
<ref>
[https://pdf.sciencedirectassets.com/271538/1-s2.0-S0304397500X05853/1-s2.0-S0304397505000307/main.pdf?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEN%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQCMZBB4AA1udjrVniZfBXgYqHN4EiFJ94RntrWOYPy56AIhAN9Xlt44hS J.C.M. Baeten: A brief history of process algebra.]
</ref>
There are lots of process calculi and none of them can be pointed to as the primary one.
A process calculus can be characterized by the basic units of behavior (actions, events) and formers of compound processes (operators, combinators).
Implementations may include several of both and they are often open for extensions.
From the literature it is a recurrent pattern that processes can be examined in two ways: one can combine component processes and examine the evolution of the resulting process. In this setting component processes may communicate with each other and the compound process may come to a rest without displaying external behavior. A single process can also be examined by placing it into a (usually not strictly specified) environment which is able to interact with the process.
Pipe-calculus fits into this framework if we make the following observations.
* Actions are the units of behavior.
* Sequence and nondeterministic choice form basic process algebra (BPA). <ref>
[https://www.cs.vu.nl/~wanf/BOOKS/procalg.pdf
Wan Fokkink: Introduction to Process Algebra.]
</ref>
* The pipe operation can be seen as a restricted, unidirectional parallel composition.
However there are notable differences. Communication primitives in mainstream process calculi often unify two conceptual steps: the selection of a communication target (e.g. a channel or another process) and the act of message sending. The two steps are unseparable. Although one can introduce as a convention '''synchronization''' where the communicated message is ignored, and '''broadcast''' where a group of processes are waiting for messages on the same channel.
In pipe-calculus these steps are separated and one can build the usual communication primitives on demand.
In pipe-calculus there is no counterpart of '''hiding''' that prevents interference between two groups of processes that are using the same channel name for communication. In pipe-calculus there is no general, bidirectional parallel composition hence we don't need a hiding primitive. The pipe operation naturally restricts communication to a pipeline.
In pipe-calculus, if a process fails to synchronize, it is aborted. This is different from the usual implementation where a process that fails to synchronize, does not evolve, it keeps "waiting" for a message. This semantics opens up the possibility for asynchronous communication. As a consequence, communication in pipe-calculus is inherently synchronous.


== Notes ==
== Notes ==
283

edits