Limitations of synchronous communication with static process structure in languages for distributed computing

Modules in a distributed program are active, communicating entities. A language for distributed programs must choose a set of communication primitives and a structure for processes. This paper examines one possible choice: synchronous communication primitives (such as rendez-vous or remote procedure call) in combination with modules that encompass a fixed number of processes (such as Ada tasks or UNIX processes). An analysis of the concurrency requirements of distributed programs suggests that this combination imposes complex and indirect solutions to common problems and thus is poorly suited for applications such as distributed programs in which concurrency is important. To provide adequate expressive power, a language for distributed programs should abandon either synchronous communication primitives or the static process structure.

[1]  Roger M. Needham,et al.  Grapevine: An exercise in distributed computing , 1981, SOSP.

[2]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

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

[4]  Lyal B. Harris November , 1890, The Hospital.

[5]  Richard F. Rashid An Inter-Process Communication Facility for UNIX , 1980 .

[6]  Roger M. Needham,et al.  Grapevine: an exercise in distributed computing , 1982, CACM.

[7]  Bruce K. Haddon Nested monitor calls , 1977, OPSR.

[8]  John C. Knight,et al.  On the Implementation and Use of Ada on Fault-Tolerant Distributed Systems , 1987, IEEE Trans. Software Eng..

[9]  Bruce Jay Nelson Remote procedure call , 1981 .

[10]  Jim Welsh,et al.  A comparative study of task communication in ada , 1981, Softw. Pract. Exp..

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

[12]  Narain H. Gehani Concurrency in Ada and Multicomputers , 1982, Comput. Lang..

[13]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

[14]  Gregory R. Andrews,et al.  Synchronizing Resources , 1981, TOPL.

[15]  Per Brinch Hansen,et al.  Distributed processes: a concurrent programming concept , 1978, CACM.

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

[17]  Scott A. Smolka,et al.  Processes, Tasks, and Monitors: A Comparative Study of Concurrent Programming Primitives , 1983, IEEE Transactions on Software Engineering.

[18]  Toby Bloom,et al.  Evaluating synchronization mechanisms , 1979, SOSP '79.

[19]  Larry Rudolph,et al.  PIE: A Programming and Instrumentation Environment for Parallel Processing , 1985, IEEE Software.

[20]  Shaula Yemini On the suitability of Ada multitasking for expressing parallel algorithms , 1982, AdaTEC '82.

[21]  Narain H. Gehani,et al.  Ada, an advanced introduction , 1983 .

[22]  Robert P. Cook,et al.  *MOD—A Language for Distributed Programming , 1980, IEEE Transactions on Software Engineering.

[23]  Jerome A. Feldman,et al.  High level programming for distributed computing , 1979, CACM.

[24]  Maurice Herlihy,et al.  Issues Process and Communication Structure for Distributed Programs , 1983, Symposium on Reliability in Distributed Software and Database Systems.

[25]  Brian A. Wichmann,et al.  Rationale for the design of the Ada programming language , 1979, SIGP.

[26]  Andrew Birrell,et al.  Implementing Remote procedure calls , 1983, SOSP '83.

[27]  Andrew M. Lister The problem of nested monitor calls , 1977, OPSR.