Language Support for Loosely Coupled Distributed Programs

A distributed operating system encourages a style of programming in which independently developed processes interact in a nontrivial fashion at run time. Server processes, for example, must deal with clients that they do not understand, and certainly cannot trust. Interprocess communications can be written in a traditional, sequential language with direct calls to kernel primitives, but the result is both cumbersome and error-prone. Convenience and safety are offered by the many distributed languages proposed to date, but in a form too inflexible for anything other than the pieces of a single distributed program. A new language known as LYNX overcomes the disadvantages of both these previous approaches. Novel features of LYNX address problems encountered in the course of practical experience, writing distributed programs without high-level language support. Chief among these features are a virtual circuit abstraction called the link, and an unconventional coroutine mechanism that allows a server to maintain nested contexts for interleaved conversations with an arbitrary number of clients.

[1]  Benjamin A. Dent,et al.  Burroughs' B6500/B7500 stack mechanism , 1968, AFIPS '68 (Spring).

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

[3]  Robert E. Strom,et al.  The NIL distributed systems programming language: a status report , 1984, SIGP.

[4]  John K. Ousterhout,et al.  Medusa: An experiment in distributed operating system structure (Summary) , 1979, SOSP '79.

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

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

[7]  Andrew P. Black Supporting Distributed Applications: Experience with Eden , 1985, SOSP.

[8]  Polle Zellweger,et al.  The structure of Cedar , 1985, ACM SIGPLAN Notices.

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

[10]  Barbara Liskov,et al.  Guardians and actions: linguistic support for robust, distributed programs , 1982, POPL '82.

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

[12]  David J. DeWitt,et al.  The Crystal Multicomputer: Design and Implementation Experience , 1987, IEEE Transactions on Software Engineering.

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

[14]  Bruce Walker,et al.  The LOCUS distributed operating system , 1983, SOSP '83.

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

[16]  Michael L. Scott,et al.  A Simple Mechanism for Type Security Across Compilation Units , 1988, IEEE Trans. Software Eng..

[17]  A. Retrospective,et al.  The UNIX Time-sharing System , 1977 .

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

[19]  Niklaus Wirth,et al.  Programming in MODULA-2 (3rd corrected ed.) , 1985 .

[20]  Michael L. Scott The Interface Between Distributed Operating System and High-Level Programming Language , 1986, ICPP.

[21]  Michael B. Jones,et al.  Matchmaker: an interface specification language for distributed processing , 1985, POPL.

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

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

[24]  David J. DeWitt,et al.  Wisconsin Modula - Part III of the First Report on the Crystal Project , 1983 .

[25]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

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

[27]  Butler W. Lampson,et al.  Experience with processes and monitors in Mesa , 1980, CACM.

[28]  David J. DeWitt,et al.  The Charlotte Distributed Operating System Part IV of the First Report on the Crystal Project , 1983 .

[29]  WirthNiklaus From programming language design to computer construction , 1985 .

[30]  Gregory R. Andrews,et al.  The distributed programming language SR—Mechanisms, design and implementation , 1982, Softw. Pract. Exp..

[31]  Murali Subbarao,et al.  Experience With Crystal, Charlotte and Lynx , 1986 .

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

[33]  Carlo Ghezzi,et al.  Programming language concepts , 1982 .

[34]  George G. Robertson,et al.  Accent: A communication oriented network operating system kernel , 1981, SOSP.

[35]  William E. Weihl,et al.  Specification and implementation of resilient, atomic data types , 1983, ACM SIGPLAN Notices.

[36]  Michael L. Scott,et al.  Messages vs. remote procedures is a false dichotomy , 1983, SIGP.

[37]  Alexandru Nicolau,et al.  Uniform Parallelism Exploitation in Ordinary Programs , 1985, ICPP.

[38]  Barton P. Miller,et al.  Process migration in DEMOS/MP , 1983, SOSP '83.

[39]  Andrew P. Black,et al.  Supporting distributed applications: experience with Eden , 1985, SOSP '85.

[40]  Willy Zwaenepoel,et al.  The distributed V kernel and its performance for diskless workstations , 1983, SOSP '83.

[41]  Niklaus Wirth,et al.  From programming language design to computer construction , 1985, CACM.

[42]  R. Strom,et al.  NIL: An integrated language and system for distributed programming , 1983, SIGPLAN '83.

[43]  Andrew P. Black,et al.  An asymmetric stream communication system , 1983, SOSP '83.