The Texas Persistent Store, version 0.1
Texas is a simple, portable, high-performance and (best of all) FREE persistent store for C++ using "pointer swizzling at page fault time" to translate persistent addresses to hardware-supported virtual addresses.
Texas is built on top of a normal virtual memory, and relies on the underlying virtual memory system for caching. It uses user-level virtual memory protections to control the faulting of data from a persistent storage file into virtual memory.
All addresses in a page are translated from a persistent format to actual virtual addresses when the page is brought into virtual memory, and subsequent memory references (including pointer traversals) are just as fast as for non-persistent data.
Texas is easy to use, and is implemented as a UNIX library. It is small and can be linked into applications. It requires no special operating system privileges, and persistence is orthogonal to type---objects may be allocated on either a conventional transient heap, or on the persistent heap, as desired.
Texas supports simple checkpointing of heap data. A log-structured storage module is under development, and will provide fast checkpointing of small transactions.
Texas is beta software, and the current prerelease version supports only simple single-machine operation. Future releases will support client-server operation, a flexible access control scheme, and transaction support.
Texas currently runs under SunOS and ULTRIX, using Sun CC or GNU C++. Porting to other modern systems (e.g., OS/2, WNT, Mach) should be easy---it requires only mprotect(), signal(), and sbrk() calls (or their equivalent) to control virtual memory protection setting and trap handling.
Papers about the pointer swizzling scheme and Texas itself (referenced below) are available via anonymous ftp from cs.utexas.edu (IP address 128.83.139.9), as postscript files swizz.ps and texaspstore.ps in the directory pub/garbage.
The source code for Texas is also available, in the directory pub/garbage/texas.
References:
Paul R. Wilson and Sheetal V. Kakkad, "Pointer Swizzling at Page Fault Time: Efficiently and Compatibly Supporting Huge Address Spaces on Standard Hardware," Proc. Second Int'l. Workshop on Object Orientation in Operating Systems, Sept. 1992, Dourdan, France, pp. 364--377.
Vivek Singhal, Sheetal V. Kakkad, and Paul R. Wilson, "Texas: an Efficient, Portable Persistent Store", Proc. Fifth Int'l. Workshop on Persistent Object Systems, Sept. 1992, San Miniato, Italy, pp. 11-33.
This document was translated by ms2html v1.8 on 04.06.96.