Paradigms for process interaction in distributed programs

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.

[1]  Robert H. Thomas,et al.  A Majority consensus approach to concurrency control for multiple copy databases , 1979, ACM Trans. Database Syst..

[2]  David K. Gifford,et al.  Weighted voting for replicated data , 1979, SOSP '79.

[3]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[4]  Hector Garcia-Molina,et al.  Elections in a Distributed Computing System , 1982, IEEE Transactions on Computers.

[5]  R. Geoff Dromey,et al.  Program development by inductive stepwise refinement , 1985, Softw. Pract. Exp..

[6]  Leslie Lamport,et al.  Paradigms for Distributed Programs , 1984, Advanced Course: Distributed Systems.

[7]  Fred B. Schneider,et al.  Synchronization in Distributed Programs , 1982, TOPL.

[8]  Dan Walsh,et al.  Design and implementation of the Sun network filesystem , 1985, USENIX Conference Proceedings.

[9]  Ashok K. Agrawala,et al.  An optimal algorithm for mutual exclusion in computer networks , 1981, CACM.

[10]  Carroll Morgan,et al.  Global and Logical Time in Distributed Algorithms , 1985, Inf. Process. Lett..

[11]  Surveyors' Forum comments on "Concepts and Notations for Concurrent Programming" , 1983, ACM Comput. Surv..

[12]  Nissim Francez,et al.  Distributed Termination , 1980, TOPL.

[13]  Udi Manber,et al.  DIB—a distributed implementation of backtracking , 1987, TOPL.

[14]  共立出版株式会社 コンピュータ・サイエンス : ACM computing surveys , 1978 .

[15]  Gregory R. Andrews,et al.  Concurrent programming - principles and practice , 1991 .

[16]  M. Stella Atkins,et al.  Performance of multi‐tasking and synchronization mechanisms in the programming language SR , 1988, Softw. Pract. Exp..

[17]  Jayadev Misra,et al.  Detecting termination of distributed computations using markers , 1983, PODC '83.

[18]  Ichiro Suzuki,et al.  A distributed mutual exclusion algorithm , 1985, TOCS.

[19]  Baruch Awerbuch,et al.  Applying static network protocols to dynamic networks , 1987, 28th Annual Symposium on Foundations of Computer Science (sfcs 1987).

[20]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[21]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[22]  Michel Raynal,et al.  Networks and distributed computation: concepts, tools, and algorithms , 1988 .

[23]  K. Mani Chandy,et al.  The drinking philosophers problem , 1984, ACM Trans. Program. Lang. Syst..

[24]  Fred B. Schneider,et al.  Ensuring Consistency in a Distributed Database System by Use of Distributed Semaphores , 1979, International Symposium on Distributed Data Bases.

[25]  Edsger W. Dijkstra,et al.  Termination Detection for Diffusing Computations , 1980, Inf. Process. Lett..

[26]  Andrew S. Tanenbaum,et al.  Computer Networks, Second Edition , 1981 .

[27]  Gérard Le Lann,et al.  Distributed Systems - Towards a Formal Approach , 1977, IFIP Congress.

[28]  LamportLeslie Time, clocks, and the ordering of events in a distributed system , 1978 .

[29]  David Clark The structuring of systems using upcalls , 1985, SOSP 1985.

[30]  G. C. Fox,et al.  Solving Problems on Concurrent Processors , 1988 .

[31]  Fred B. Schneider,et al.  Derivation of a Distributed Algorithm for Finding Paths in Directed Networks , 1986, Sci. Comput. Program..

[32]  Richard D. Schlichting,et al.  Fault-Tolerant Broadcasts , 1984, Sci. Comput. Program..

[33]  Michel Raynal,et al.  Algorithms for mutual exclusion , 1986 .

[34]  S. P. Rana,et al.  A Distributed Solution of the Distributed Termination Problem , 1983, Inf. Process. Lett..

[35]  Henri E. Bal,et al.  Programming languages for distributed computing systems , 1989, CSUR.

[36]  Mark A. Johnson,et al.  Solving problems on concurrent processors. Vol. 1: General techniques and regular problems , 1988 .

[37]  Narain H. Gehani,et al.  Concurrent C , 1986, Softw. Pract. Exp..

[38]  Dale H. Grit,et al.  Programming divide and conquer for a mimd machine , 1985, Softw. Pract. Exp..

[39]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[40]  Mamoru Maekawa,et al.  A N algorithm for mutual exclusion in decentralized systems , 1985, TOCS.

[41]  K. Thompson,et al.  UNIX time-sharing system: UNIX implementation , 1978, The Bell System Technical Journal.

[42]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[43]  Nicholas Carriero,et al.  Distributed data structures in Linda , 1986, POPL '86.

[44]  Leslie Lamport,et al.  An Assertional Correctness Proof of a Distributed Algorithm , 1982, Sci. Comput. Program..

[45]  K Thompson,et al.  UNIX implementation , 1986 .

[46]  Arthur J. Bernstein,et al.  Output Guards and Nondeterminism in “Communicating Sequential Processes” , 1980, TOPL.

[47]  Ernest J. H. Chang,et al.  Echo Algorithms: Depth Parallel Operations on General Graphs , 1982, IEEE Transactions on Software Engineering.

[48]  W. Daniel Hillis,et al.  The connection machine , 1985 .

[49]  Selim G. Akl,et al.  Parallel Sorting Algorithms , 1985 .

[50]  W. Morven Gentleman,et al.  Message passing between sequential processes: The reply primitive and the administrator concept , 1981, Softw. Pract. Exp..

[51]  A. J. M. van Gasteren,et al.  Derivation of a Termination Detection Algorithm for Distributed Computations , 1983, Inf. Process. Lett..

[52]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[53]  Keith Marzullo,et al.  Maintaining the time in a distributed system , 1985, OPSR.

[54]  M. C. Er,et al.  Computing Sums of Order-k Fibonacci Numbers in Log Time , 1983, Inf. Process. Lett..

[55]  Robert H. Thomas,et al.  The Uniform System: An approach to runtime support for large scale shared memory parallel processors , 1988, ICPP.

[56]  Ernest Jen-Hao Chang Decentralized algorithms in distributed systems , 1979 .

[57]  David D. Clark,et al.  The structuring of systems using upcalls , 1985, SOSP '85.

[58]  Subbarayan Venkatesan,et al.  A Message-Optimal Algorithm for Distributed Termination Detection , 1990, J. Parallel Distributed Comput..

[59]  K. Mani Chandy,et al.  Termination Detection of Diffusing Computations in Communicating Sequential Processes , 1982, TOPL.

[60]  Leslie Lamport,et al.  The Byzantine Generals Problem , 1982, TOPL.

[61]  Mamoru Maekawa,et al.  Operating Systems: Advanced Concepts , 1987 .

[62]  Leslie Lamport,et al.  Distributed snapshots: determining global states of distributed systems , 1985, TOCS.

[63]  Leslie Lamport,et al.  Distributed Systems: Methods and Tools for Specification, An Advanced Course, April 3-12, 1984 and April 16-25, 1985, Munich, Germany , 1985, Advanced Course: Distributed Systems.

[64]  Michel Raynal,et al.  Distributed algorithms and protocols , 1988 .

[65]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[66]  Kenneth P. Birman,et al.  Reliable communication in the presence of failures , 1987, TOCS.

[67]  Richard D. Schlichting,et al.  Fail-stop processors: an approach to designing fault-tolerant computing systems , 1981, TOCS.

[68]  Michel Raynal Networks and Distributed Computation , 1988 .

[69]  Roger M. Needham,et al.  On the duality of operating system structures , 1979, OPSR.

[70]  Gregory R. Andrews,et al.  An overview of the SR language and implementation , 1988, TOPL.

[71]  David Lorge Parnas,et al.  Concurrent control with “readers” and “writers” , 1971, CACM.

[72]  Gregory R. Andrews,et al.  Concepts and Notations for Concurrent Programming , 1983, CSUR.