Dynamic Sharing and Backward Compatibility on 64-Bit Machines

As an alternative to communication via messages or files, shared memory has the potential to be simpler, faster, and less wasteful of space. Unfortunately, the mechanisms available for sharing in most multi-user operating systems are difficult to use. As a result, shared memory tends to appear primarily in self-contained parallel applications, where library or compiler support can take care of the messy details. .pp We see a tremendous opportunity to extend the advantages of sharing across application boundaries. We believe that these advantages can be realized without introducing major changes to the Unix programming model. In particular, we believe that it is both possible and desirable to incorporate shared memory segments into the hierarchical file system name space. .pp Our approach has two components: First, we use dynamic linking to allow programs to access shared data and code in the same way they access ordinary (private) variables and functions. Second, we unify memory and files into a single-level store that facilitates the sharing of pointers. This second component is made feasible by the 64-bit addresses of emerging microprocessors.

[1]  Charles N. Fischer,et al.  Crafting a Compiler , 1988 .

[2]  John K. Ousterhout,et al.  Push Technology, Not Abstractions , 1992, OPSR.

[3]  David Alex Lamb,et al.  IDL: sharing intermediate representations , 1987, TOPL.

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

[5]  Claude Kaiser,et al.  CHORUS Distributed Operating System , 1988, Comput. Syst..

[6]  Maurice Herlihy,et al.  A Value Transmission Method for Abstract Data Types , 1982, TOPL.

[7]  Brian D. Marsh,et al.  Multi-Model Parallel Programming , 1992 .

[8]  Michael L. Scott,et al.  Multi-model parallel programming in psyche , 1990, PPOPP '90.

[9]  Carl H. Hauser,et al.  The portable common runtime approach to interoperability , 1989, SOSP '89.

[10]  Marc Shapiro,et al.  Two Extensions to C++: A Dynamic Link Editor and Inner Data , 1987, C++ Workshop.

[11]  Michael L. Scott,et al.  Design Rationale for Psyche a General-Purpose Multiprocessor Operating System , 1988, ICPP.

[12]  Michael L. Scott,et al.  Shared memory ought to be commonplace , 1992, [1992] Proceedings Third Workshop on Workstation Operating Systems.

[13]  Andrew P. Black,et al.  The Eden System: A Technical Review , 1985, IEEE Transactions on Software Engineering.

[14]  David L. Black Scheduling support for concurrency and parallelism in the Mach operating system , 1990, Computer.

[15]  Ted Kaehler,et al.  Virtual memory on a narrow machine for an object-oriented language , 1986, OOPLSA '86.

[16]  Alan L. Cox,et al.  An Empirical Study of Message-Passing Overhead , 1986 .

[17]  C. Robert Morgan SIGPLAN Notices Introduction to the Special Issue on the Interface Description Language IDL , 1987, ACM SIGPLAN Notices.

[18]  Brett D. Fleisch,et al.  Mirage: a coherent distributed shared memory design , 1989, SOSP '89.

[19]  Brian N. Bershad,et al.  An Open Environment for Building Parallel Programming Systems , 1988, PPOPP/PPEALS.

[20]  Robbert van Renesse,et al.  Amoeba A Distributed Operating System for the 1990 s Sape , 1990 .

[21]  Elliott I. Organick,et al.  The multics system: an examination of its structure , 1972 .

[22]  David L. Black,et al.  The duality of memory and communication in the implementation of a multiprocessor operating system , 1987, SOSP '87.

[23]  Michael L. Scott,et al.  The Rochester checkers player: multimodel parallel programming for animate vision , 1992, Computer.

[24]  Brian N. Bershad,et al.  Lightweight remote procedure call , 1989, TOCS.

[25]  Soha Hassoun,et al.  A 200-MHz 64-bit Dual-Issue CMOS Microprocessor , 1992, Digit. Tech. J..

[26]  Jeffrey S. Chase,et al.  Lightweight shared objects in a 64-bit operating system , 1992, OOPSLA '92.

[27]  Barton P. Miller,et al.  CLAM- an open system for graphical user interfaces , 1987, OOPSLA '87.

[28]  Brian N. Bershad,et al.  User-level interprocess communication for shared memory multiprocessors , 1991, TOCS.

[29]  Willy Zwaenepoel,et al.  Implementation and performance of Munin , 1991, SOSP '91.

[30]  Paul R. Wilson,et al.  Pointer swizzling at page fault time: efficiently supporting huge address spaces on standard hardware , 1991, CARN.

[31]  Brian N. Bershad,et al.  Scheduler activations: effective kernel support for the user-level management of parallelism , 1991, TOCS.

[32]  Bill Nitzberg,et al.  Distributed shared memory: a survey of issues and algorithms , 1991, Computer.

[33]  David A. Moon,et al.  The Symbolics Genera Programming Environment , 1987, IEEE Software.

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

[35]  Brian N. Bershad,et al.  An Open Environment for Building Parallel Programming Systems , 1988, PPOPP/PPEALS.

[36]  Kai Li,et al.  A Hypercube Shared Virtual Memory System , 1989, ICPP.

[37]  Yogen K. Dalal,et al.  Pilot: an operating system for a personal computer , 1980, CACM.

[38]  Paul Hudak,et al.  Memory coherence in shared virtual memory systems , 1989, TOCS.

[39]  Michael L. Scott The Lynx Distributed Programming Language: Motivation, Design and Experience , 1991, Comput. Lang..

[40]  Pierre Jouvelot,et al.  Semantic file systems , 1991, SOSP '91.

[41]  Walter F. Tichy,et al.  Implementation and evaluation of a revision control system , 1982 .

[42]  Brian N. Bershad,et al.  A Remote Procedure Call Facility for Interconnecting Heterogeneous Computer Systems , 1987, IEEE Transactions on Software Engineering.

[43]  Evangelos P. Markatos,et al.  First-class user-level threads , 1991, SOSP '91.

[44]  Umakishore Ramachandran,et al.  An implementation of distributed shared memory , 1991, Softw. Pract. Exp..

[45]  Michael L. Scott,et al.  Operating System Support for Animate Vision , 1992, J. Parallel Distributed Comput..

[46]  Per Brinch Hansen Programming a personal computer , 1982 .

[47]  Richard J. Beach,et al.  A structural view of the Cedar programming environment , 1986, TOPL.

[48]  David R. Cheriton The V Kernel: A Software Base for Distributed Systems , 1984, IEEE Software.

[49]  John A. Kunze,et al.  A trace-driven analysis of the UNIX 4.2 BSD file system , 1985, SOSP '85.

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

[51]  Ronald A. Olsson,et al.  An approach to genuine dynamic linking , 1991, Softw. Pract. Exp..

[52]  Brian N. Bershad,et al.  Watchdogs - Extending the UNIX File System , 1988, Comput. Syst..

[53]  Michael L. Scott An Overview of Lynx , 1989 .

[54]  William A. Wulf,et al.  HYDRA/C.Mmp, An Experimental Computer System , 1981 .

[55]  Michael L. Scott,et al.  Evolution of an Operating System for Large-Scale Shared-Memory Multiprocessors , 1989 .

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

[57]  Paul J. Leach,et al.  The Architecture of an Integrated Local Network , 1983, IEEE J. Sel. Areas Commun..

[58]  Anna R. Karlin,et al.  Empirical studies of competitve spinning for a shared-memory multiprocessor , 1991, SOSP '91.

[59]  Andrew P. Black,et al.  Fine-grained mobility in the Emerald system , 1987, TOCS.

[60]  Jeffrey S. Chase,et al.  How to Use a 64-Bit Virtual Address Space , 1992 .