Exporting a user interface to memory management from a communication-oriented operating system

One of the most important resources that an operating system manages is main memory. Systems often provide virtual memory, using this main memory to cache the contents of a larger virtual storage. Unfortunately, existing systems hide the algorithms for controlling the contents of the main memory cache and for managing the external storage used to represent that virtual memory within the operating system kernel, making them unavailable to important systems applications. My thesis is that it is desirable and practical to provide an external memory management interface that allows user-level programs to define and manage the contents of memory objects that may be mapped into virtual address spaces. Exporting this interface simplifies the construction of complex virtual memory applications, allowing them to manage the sharing, consistency, and permanent storage of their data without being embedded in the operating system kernel. These systems applications can also take advantage of the performance benefits of using main memory as a cache of the contents of their data objects. This dissertation describes the Mach external memory management interface and implementation in detail. The interface design is based on communication: memory objects are communication channels, on which the operating system sends messages to read or write the contents of pages of virtual memory. The implementation addresses the modularity and security issues that arise from exporting this interface to user-level programs. Several systems applications that have been constructed using the Mach interface are described, including a user-level file system, a transaction-based data management system, and a network shared virtual memory service. An evaluation of the Mach system analyzes the cost of using this interface, and shows how it makes a fast path to the main memory cache available to systems applications. Experiments also show that the overall performance of the Mach system does not suffer appreciably under normal load, and that this system still outperforms commercially available operating systems under identical benchmarks. I conclude that an external memory management interface is a useful, affordable component that should be provided by future operating systems.

[1]  Edward R. Zayas,et al.  Attacking the process migration bottleneck , 1987, SOSP '87.

[2]  Albert Chang,et al.  801 storage: architecture and programming , 1988, TOCS.

[3]  Meichun Hsu,et al.  Update propagation in distributed memory hierarchy , 1990, [1990] Proceedings. Sixth International Conference on Data Engineering.

[4]  Richard A. MacKinnon The Changing Virtual Machine Environment: Interfaces to Real Hardware, Virtual Hardware, and Other Virtual Machines , 1979, IBM Syst. J..

[5]  Partha Dasgupta,et al.  The Clouds distributed operating system: functional description, implementation details and related work , 1988, [1988] Proceedings. The 8th International Conference on Distributed.

[6]  Ronald Morrison,et al.  An Approach to Persistent Programming , 1989, Comput. J..

[7]  Robert C. Daley,et al.  The multics virtual memory , 1969, SOSP '69.

[8]  Daniel L. Murphy Storage organization and management in TENEX , 1972, AFIPS '72 (Fall, part I).

[9]  Christos Faloutsos,et al.  Predictive Load Control for Flexible Buffer Allocation , 1991, VLDB.

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

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

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

[13]  David L. Black,et al.  The mach exception handling facility , 1988, PADD '88.

[14]  Jr. Avadis Tevanian Architecture independent virtual memory management for parallel and distributed environments: the mach approach , 1987 .

[15]  Mahadev Satyanarayanan,et al.  The ITC distributed file system: principles and design , 1985, SOSP '85.

[16]  L TraigerIrving Virtual memory management for database systems , 1982 .

[17]  Marc A. Auslander,et al.  The Evolution of the MVS Operating System , 1981, IBM J. Res. Dev..

[18]  Mahadev Satyanarayanan,et al.  Scale and performance in a distributed file system , 1987, SOSP '87.

[19]  Richard F. Rashid,et al.  The Integration of Virtual Memory Management and Interprocess Communication in Accent , 1986, ACM Trans. Comput. Syst..

[20]  Andrew P. Black,et al.  Understanding transactions in the operating system context , 1991, OPSR.

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

[22]  Jim Gray,et al.  A Transaction Model , 1980, ICALP.

[23]  Roy H. Campbell,et al.  Considerations of Persistence and Security in Choices, an Object-Oriented Operating System , 1990 .

[24]  Peter Buneman,et al.  Types and persistence in database programming languages , 1987, CSUR.

[25]  John Howard,et al.  Proceedings of the eighth ACM symposium on Operating systems principles , 1981 .

[26]  BabaogluÖzalp,et al.  Converting a swap-based system to do paging in an architecture lacking page-referenced bits , 1981 .

[27]  Peter J. Denning,et al.  Working Sets Past and Present , 1980, IEEE Transactions on Software Engineering.

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

[29]  David J. DeWitt,et al.  Object and File Management in the EXODUS Extensible Database System , 1986, VLDB.

[30]  Rudolf Bayer,et al.  A database cache for high performance and fast restart in database systems , 1984, TODS.

[31]  Stewart M. Clamen,et al.  Data persistence in programming languages : a survey , 1991 .

[32]  Robert P. Fitzgerald,et al.  A performance evaluation of the integration of virtual memory management and inter-process communication in accent (operating system, copy-on-write) , 1986 .

[33]  William A. Wulf,et al.  HYDRA , 1974, Commun. ACM.

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

[35]  Vadim Abrossimov,et al.  Virtual Memory Management in Chorus , 1989, Process in Distributed Operating Systems and Distributed Systems Management.

[36]  Jerome H. Saltzer,et al.  The Multics kernel design project , 1977, SOSP '77.

[37]  Wolfgang Effelsberg,et al.  Principles of database buffer management , 1984, TODS.

[38]  Andrew R. Cherenson,et al.  The Sprite network operating system , 1988, Computer.

[39]  Hans Diel,et al.  Data management facilities of an operating system kernel , 1984, SIGMOD '84.

[40]  Dan Duchamp Analysis of transaction management performance , 1989, SOSP '89.

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

[42]  Michael Stonebraker,et al.  Problems in supporting data base transactions in an operating system transaction manager , 1985, OPSR.

[43]  Eric C. Cooper Replicated procedure call , 1984, PODC '84.

[44]  Skef Wholey,et al.  Internal design of CMU common Lisp on the IBM RT PC , 1987 .

[45]  Irving L. Traiger Virtual memory management for database systems , 1982, OPSR.

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

[47]  A. Nico Habermann,et al.  Modularization and hierarchy in a family of operating systems , 1976, CACM.

[48]  David K. Gifford,et al.  A caching file system for a programmer's workstation , 1985, SOSP '85.

[49]  Marc Shapiro,et al.  Generic virtual memory management for operating system kernels , 1989, SOSP '89.

[50]  Janak H. Patel,et al.  Compiler Directed Memory Management Policy For Numerical Programs , 1985, SOSP.

[51]  J. L. Eppinger,et al.  Virtual memory management for transaction processing systems , 1989 .

[52]  Karsten Schwan,et al.  StarOS, a multiprocessor operating system for the support of task forces , 1979, SOSP '79.

[53]  Jim Griffioen,et al.  A New Design for Distributed Systems: The Remote Memory Model , 1990, USENIX Summer.

[54]  Jack B. Dennis,et al.  Virtual memory, processes, and sharing in Multics , 1967, CACM.

[55]  Edward R. Zayas The use of copy-on-reference in a process migration system , 1987 .

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

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

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

[59]  Ravi Krishnamurthy,et al.  The Case For Safe RAM , 1989, VLDB.

[60]  Robert P. Goldberg,et al.  The double paging anomaly , 1974, AFIPS '74.

[61]  Mary R. Thompson,et al.  Sesame: the spice file system , 1985 .