Virtual memory management for transaction processing systems

To support failure atomicity and permanence, transaction processing systems store data in recoverable storage. Recoverable storage is commonly implemented using a combination of volatile, non-volatile, and stable storage. Data are maintained in non-volatile storage over the long term. While data are being processed, they are cached in volatile, primary memory. Stable storage is used for a log that permits operations to be undone or redone. Transaction processing systems typically implement recoverable storage themselves, using virtual memory or specially mapped physical memory for volatile buffer space. However, many advantages are obtained if the operating system provides recoverable virtual memory: data are mapped into virtual memory and thereby accessed more conveniently; the operating system's fast address translation and paging components provide increased performance; the amount of primary memory allocated to buffering data adapts to system load allowing double paging to be eliminated. Recoverable virtual memory does not preclude the use of other transaction processing techniques. In this dissertation, I show that virtual memory support can be provided for transaction processing systems. I review some novel hardware and special purpose implementations of recoverable virtual memory. I then describe in depth a system for which I have implemented recoverable virtual memory: the Camelot Transaction Processing Facility. The Camelot implementaion utilizes a general software approach that does not use any special purpose hardware (other than standard virtual memory hardware). The implementation is portable: it runs on IBM RTs, Suns, and Vaxes, including shared memory multiprocessor Vaxes. The approach allows the use of a variety of logging and locking techniques. Other specialized implementations of recoverable virtual memory exist, but they impose severe restrictions on users. This implementation demonstrates the feasibility of recoverable virtual memory for general purpose transaction processing systems.

[1]  Michael Stonebraker,et al.  Operating system support for database management , 1981, CACM.

[2]  Lindsey L. Spratt The transaction resolution journal: extending the before journal , 1985, OPSR.

[3]  Paul Hudak,et al.  Memory coherence in shared virtual memory systems , 1986, PODC '86.

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

[5]  Maurice Herlihy,et al.  Avalon : language support for reliable distributed systems , 1986 .

[6]  Michael Stonebraker,et al.  A Distributed Data Base Version of INGRES. , 1976 .

[7]  Jimmy P. Strickland,et al.  Log write-ahead protocols and IMS/VS logging , 1983, PODS '83.

[8]  Michael Stonebraker,et al.  The design and implementation of INGRES , 1976, TODS.

[9]  Ken Thompson,et al.  The UNIX time-sharing system , 1974, CACM.

[10]  Dean Daniels,et al.  R*: An Overview of the Architecture , 1986, JCDKB.

[11]  Barbara Liskov,et al.  On Linguistic Support for Distributed Programs , 1982, IEEE Transactions on Software Engineering.

[12]  Maurice Herlihy,et al.  General quorum consensus : a replication method for abstract data types , 1984 .

[13]  Bruce Jay Nelson Remote procedure call , 1981 .

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

[15]  Ron Obermarck,et al.  Distributed deadlock detection algorithm , 1982, TODS.

[16]  Laura M. Haas,et al.  Computation and communication in R*: a distributed database manager , 1984, TOCS.

[17]  Giovanni Maria Sacco,et al.  Buffer management in relational database systems , 1986, TODS.

[18]  Barbara Liskov,et al.  Reliable object storage to support atomic actions , 1983, SOSP 1985.

[19]  Irving L. Traiger,et al.  Evaluation Techniques for Storage Hierarchies , 1970, IBM Syst. J..

[20]  William E. Weihl Data-dependent concurrency control and recovery , 1985, OPSR.

[21]  Michael Stonebraker,et al.  Virtual memory transaction management , 1984, OPSR.

[22]  E. B. Moss,et al.  Nested Transactions: An Approach to Reliable Distributed Computing , 1985 .

[23]  Alfred Z. Spector,et al.  Distributed transactions for reliable systems , 1985, SOSP 1985.

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

[25]  William E. Weihl,et al.  SPECIFICATION AND IMPLEMENTATION OF ATOMIC DATA TYPES , 1984 .

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

[27]  Stephen W. Sherman,et al.  Performance of a database manager in a virtual memory system , 1976, TODS.

[28]  Alfred Z. Spector,et al.  Synchronizing shared abstract types , 1984, TOCS.

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

[30]  Alfred Z. Spector,et al.  Performance Evaluation on Distributed Tansaction Facilities , 1985, HPTS.