Paradigms for process interaction in distributed programs
- 1 March 1991
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Computing Surveys
- Vol. 23 (1) , 49-90
- https://doi.org/10.1145/103162.103164
Abstract
Distributed computations are concurrent programs in which processes communicate by message passing. Such programs typically execute on network architectures such as networks of workstations or distributed memory parallel machines (i.e., multicomputers such as hypercubes). Several paradigms—examples or models—for process interaction in distributed computations are described. These include networks of filters, clients, and servers, heartbeat algorithms, probe/echo algorithms, broadcast algorithms, token-passing algorithms, decentralized servers, and bags of tasks. These paradigms are appliable to numerous practical problems. They are illustrated by solving problems, including parallel sorting, file servers, computing the topology of a network, distributed termination detection, replicated databases, and parallel adaptive quadrature. Solutions to all problems are derived in a step-wise fashion from a general specification of the problem to a concrete solution. The derivations illustrate techniques for developing distributed algorithms.Keywords
This publication has 39 references indexed in Scilit:
- Reliable communication in the presence of failuresACM Transactions on Computer Systems, 1987
- Derivation of a distributed algorithm for finding paths in directed networksScience of Computer Programming, 1986
- A distributed mutual exclusion algorithmACM Transactions on Computer Systems, 1985
- MULTILISP: a language for concurrent symbolic computationACM Transactions on Programming Languages and Systems, 1985
- Distributed snapshotsACM Transactions on Computer Systems, 1985
- Fault-tolerant broadcastsScience of Computer Programming, 1984
- Derivation of a termination detection algorithm for distributed computationsInformation Processing Letters, 1983
- Synchronization in Distributed ProgramsACM Transactions on Programming Languages and Systems, 1982
- Distributed TerminationACM Transactions on Programming Languages and Systems, 1980
- Concurrent control with “readers” and “writers”Communications of the ACM, 1971