Linking Shared Segments

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 Unix are not very easy 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. We have developed a system, called Hemlock, for transparent sharing of variables and/or subroutines across application boundaries. Our system is backward compatible with existing versions of Unix. It employs dynamic linking in conjunction with the Unix mmap facility and a kernel-maintained correspondence between virtual addresses and files. It introduces the notion of scoped linking to avoid naming conflicts in the face of extensive sharing.

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

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

[3]  BlackAndrew,et al.  Fine-grained mobility in the Emerald system , 1988 .

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

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

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

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

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

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

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

[11]  Michael L. Scott,et al.  Dynamic Sharing and Backward Compatibility on 64-Bit Machines , 1992 .

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

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

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

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

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

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

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

[19]  William J. Bolosky,et al.  Mach: A New Kernel Foundation for UNIX Development , 1986, USENIX Summer.

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

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

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

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

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

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

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

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