Algebraic Specification Of A Communication Scheduler

A distributed programming language normally incorporates one mechanism by which processes communicate with each other. This mechanism can be used to transfer information or to synchronize the flow of control in the program. Different communication mechanisms have been proposed for different languages. In this paper, we provide a common framework in which these mechanisms can be examined independently of the languages in which they may be embedded. Operationally, this framework is a communication scheduler: formally, it is specified algebraically as a data type. A number of different communication mechanisms, such as synchronous and asynchronous message passing, broadcasts and remote procedure calls, are modelled and, as an illustration of how global properties can be analysed, we consider the problem of deadlock detection.