Distributed Programming with Shared Data

Abstract Until recently, at least one thing was clear about parallel programming: shared-memory machines were programmed in a language based on shared variables and distributed machines were programmed using message passing. Recent research on distributed systems and their languages, however, has led to new methodologies that blur this simple distinction. Operating system primitives and languages for programming distributed systems have been proposed that support shared data without the presence of physical shared memory. We will look at the reasons for this evolution, the resemblances and differences among these new proposals, and the key issues in their design and implementation. It turns out that many implementations are based on replication of data. We take this idea one step further, and discuss how automatic replication can be used as a basis for a new model with similar semantics as shared variables. Finally, we discuss a new language, Orca, based on this model.

[1]  Akinori Yonezawa,et al.  Distributed computing in ABCL/1 , 1987 .

[2]  Ehud Shapiro,et al.  Concurrent Prolog: A Progress Report , 1985, Computer.

[3]  Mario Tokoro,et al.  Experience and evolution of concurrent Smalltalk , 1987, OOPSLA 1987.

[4]  Steven Lucco,et al.  Parallel programming in a virtual object space , 1987, OOPSLA '87.

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

[6]  Henri E. Bal,et al.  A Distributed Implementation of the Shared Data-object Model , 1989 .

[7]  Larry Carter,et al.  Distrbution and Abstract Types in Emerald , 1987, IEEE Transactions on Software Engineering.

[8]  Henri E. Bal,et al.  Experience with distributed programming in Orca , 1990, Proceedings. 1990 International Conference on Computer Languages.

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

[10]  Keith L. Clark,et al.  PARLOG: parallel programming in logic , 1986, ACM Trans. Program. Lang. Syst..

[11]  Alessandro Forin,et al.  Architectural support for multilanguage parallel programming on heterogeneous systems , 1987, ASPLOS.

[12]  Andrew S. Tanenbaum,et al.  Distributed operating systems , 2009, CSUR.

[13]  Eli Upfal,et al.  How to share memory in a distributed system , 1984, JACM.

[14]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[15]  Ehud Shapiro,et al.  Concurrent PROLOG: Collected Papers , 1987 .

[16]  Raymond T. Yeh,et al.  Communication Port: A Language Concept for Concurrent Programming , 1980, IEEE Transactions on Software Engineering.

[17]  Nicholas Carriero,et al.  Linda and Friends , 1986, Computer.

[18]  Andrew S. Tanenbaum,et al.  Operating systems: design and implementation , 1987, Prentice-Hall software series.

[19]  Henri E. Bal,et al.  Language- and Machine-Independent Global Optimization on Intermediate Code , 1986, Comput. Lang..

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

[21]  Philip A. Bernstein,et al.  Concurrency Control in Distributed Database Systems , 1986, CSUR.

[22]  Mario Tokoro,et al.  Experience and Evolution of ConcurrentSmalltalk , 1987, OOPSLA.

[23]  Jr. Nicholas John Carriero Implementation of tuple space machines , 1987 .

[24]  David R. Cheriton,et al.  Preliminary thoughts on problem-oriented shared memory: a decentralized approach to distributed systems , 1985, OPSR.

[25]  Kai Li,et al.  Shared virtual memory on loosely coupled multiprocessors , 1986 .

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

[27]  Alessandro Forin,et al.  Architectural support for multilanguage parallel programming on heterogeneous systems , 1987 .

[28]  Narain H. Gehani,et al.  Broadcasting Sequential Processes (BSP) , 1984, IEEE Transactions on Software Engineering.

[29]  Steven E. Lucco Parallel programming in a virtual object space , 1987, OOPSLA 1987.

[30]  Andrew S. Tanenbaum,et al.  A practical tool kit for making portable compilers , 1983, Commun. ACM.

[31]  Nicholas Carriero,et al.  The S/Net's Linda kernel , 1986, TOCS.

[32]  Henri E. Bal,et al.  Replication techniques for speeding up parallel applications on distributed systems , 1992, Concurr. Pract. Exp..

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

[34]  Klaus-Peter Löhr,et al.  Object-Oriented Concurrent Programming , 1992, TOOLS.

[35]  R. A. Stammers ADA on distributed hardware , 1984 .

[36]  Gregory R. Andrews,et al.  Paradigms for process interaction in distributed programs , 1991, CSUR.

[37]  R. V. Renesse,et al.  Implementing distributed algorithms using remote procedure calls , 1987 .

[38]  A. R. Karlin Sharing memory in distributed systems—methods and applications , 1987 .

[39]  Alfred Z. Spector,et al.  Performing remote operations efficiently on a local computer network , 1981, SOSP.

[40]  Henri E. Bal Programming distributed systems , 1990 .

[41]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[42]  Henri E. Bal,et al.  An efficient reliable broadcast protocol , 1989, OPSR.

[43]  C. A. R. Hoare,et al.  The emperor's old clothes , 1981, CACM.

[44]  Andrew S. Tanenbaum,et al.  The Design of a Capability-Based Distributed Operating System , 1986, Comput. J..

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

[46]  Steve Gregory,et al.  Parallel logic programming in parlo9 , 1987 .

[47]  Eric J. Berglund An Introduction to the V-System , 1986, IEEE Micro.

[48]  Henri E. Bal,et al.  Implementing Distributed Algortihms using Remote Procedure Call , 1899 .