Skip to main content

Texas: An Efficient, Portable Persistent Store

  • Conference paper
Persistent Object Systems

Part of the book series: Workshops in Computing ((WORKSHOPS COMP.))

Abstract

Texas is a persistent storage system for C++, providing high performance while emphasizing simplicity, modularity and portability. A key component of the design is the use of pointer swizzling at page fault time, which exploits existing virtual memory features to implement large address spaces efficiently on stock hardware, with little or no change to existing compilers. Long pointers are used to implement an enormous address space, but are transparently converted to the hardware-supported pointer format when pages are loaded into virtual memory.

Runtime type descriptors and slightly modified heap allocation routines support page-wise pointer swizzling by allowing objects and their pointer fields to be identified within pages. If compiler support for runtime type identification is not available, a simple preprocessor can be used to generate type descriptors.

This address translation is largely independent of issues of data caching, sharing, and checkpointing; it employs operating systems’ existing virtual memories for caching, and a simple and flexible log-structured storage manager to improve checkpointing performance.

Pagewise virtual memory protections are also used to detect writes for logging purposes, without requiring any changes to compiled code. This may degrade checkpointing performance for small transactions with poor locality of writes, but page diffing and sub-page logging promise to keep performance competitive with finer-grained checkpointing schemes.

Texas presents a simple programming interface; an application creates persistent object by simply allocating them on the persistent heap. In addition, the implementation is relatively small, and is easy to incorporate into existing applications. The log-structured storage module easily supports advanced extensions such as compressed storage, versioning, and adaptive reorganization.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. M.P. Atkinson, P.J. Bailey, K.J. Chisholm, P. W. Cockshott, and R. Morrison. An approach to persistent programming. The Computer Journal, 26 (4): 360–365, December 1983.

    MATH  Google Scholar 

  2. W. Cockshott, M. Atkinson, K. Chisholm, P. Bailey, and R. Morrison. Persistent object management system. Software Practice and Experience, 14 (1): 49–71, January 1984.

    Article  Google Scholar 

  3. Alan Dearle, Gail M. Shaw, and Stanley B. Zdonik, editors. Implementing Persistent Object Bases: Principles and Practice (Proceedings of the Fourth International Workshop on Persistent Object Systems). Morgan Kaufman, Martha’s Vineyard, Massachusetts, September 1990.

    Google Scholar 

  4. Paul R. Wilson and Sheetal V. Kakkad. Pointer swizzling at page fault time: Efficiently and compatibly supporting huge addresses on standard hardware. In International Workshop on Object Orientation in Operating Systems,pages 364–377, Paris, France, September 1992. IEEE Press.

    Google Scholar 

  5. J. Eliot B. Moss. Working with objects: To swizzle or not to swizzle? Technical Report 90–38, University of Massachusetts, Amherst, Massachusetts, May 1990.

    Google Scholar 

  6. Seth J. White and David J. Dewitt. A performance study of alternative object faulting and pointer swizzling strategies. In 18th International Conference on Very Large Data Bases, Vancouver, British Columbia, Canada, October 1992. To appear.

    Google Scholar 

  7. Henry G. Baker, Jr. List processing in real time on a serial computer. Communications of the ACM, 21 (4): 280–294, April 1978.

    Article  MATH  Google Scholar 

  8. Andrew W. Appel, John R. Ellis, and Kai Li. Real-time concurrent garbage collection on stock multiprocessors. In Proceedings of SIGPLAN ‘88 Conference on Programming Language Design and Implementation,pages 11–20. SIGPLAN ACM Press, June 1988. Atlanta, Georgia.

    Google Scholar 

  9. Paul R. Wilson. Uniprocessor garbage collection techniques. In International Workshop on Memory Management,pages 1–42, St. Malo, France, September 1992. Springer-Verlag Lecture Notes in Computer Science vol. 637.

    Google Scholar 

  10. Jeffrey S. Chase, Henry M. Levy, Edward D. Lazowska, and Miche Baker-Harvey. Lightweight shared objects in a 64-bit operating system. In ACM SIG-PLAN 1992 Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA ‘82), Vancouver, British Columbia, Canada, October 1992.

    Google Scholar 

  11. Hans-Juergen Boehm and Alan Demers. Garbage collection in an uncooperative environment. Software Practice and Experience, 18 (9): 807–820, September 1988.

    Article  Google Scholar 

  12. David Wallace. Runtime type support in C and C++. Technical Report revision 1.1, Cygnus Reports, 1992.

    Google Scholar 

  13. Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. The Object-Store database system. Communications of the ACM, 34 (10): 50–63, October 1991.

    Article  Google Scholar 

  14. Richard Greenblatt. Unpublished technical report on the Moby address space. Technical report, Lisp Machines, Incorporated.

    Google Scholar 

  15. M. Anderson, R. D. Pose, and C. S. Wallace. A password-capability system. Computer Journal, 29 (1), 1986.

    Google Scholar 

  16. Jose Alves Marques and Paulo Guedes. Extending the operating system to support an object-oriented environment. In ACM SIGPLAN 1989 Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA ‘89), pages 113–122, New Orleans, Louisiana, October 1989.

    Google Scholar 

  17. Mendel Rosenblum and John K. Ousterhout. The design and implementation of a log-structured file system. In Thirteenth ACM Symposium on Operating Systems Principles, pages 1–15, Pacific Grove, California, October 1991.

    Google Scholar 

  18. Jacques Cohen. Garbage collection of linked data structures. Computing Surveys, 13 (3): 341–367, September 1981.

    Article  MathSciNet  Google Scholar 

  19. Paul R. Wilson and Thomas G. Moher. Design of the opportunistic garbage collector. In ACM SIGPLAN 1989 Conference on Object Oriented Programming Systems, Languages and Applications (OOPSLA ‘89), pages 23–35, New Orleans, Louisiana, October 1989.

    Google Scholar 

  20. Barry Hayes. Using key object opportunism to collect old objects. In ACM SIG-PLAN 1991 Conference on Object Oriented Programming Systems. Languages and Applications (OOPSLA ‘81),pages 33–46, Phoenix, Arizona, October 1991. ACM Press.

    Google Scholar 

  21. Henry Lieberman and Carl Hewitt. A real-time garbage collector based on the lifetimes of objects. Communications of the ACM, 26 (6): 419–429, June 1983.

    Article  Google Scholar 

  22. Walter R. Smith and Robert V. Welland. A model for address-oriented software and hardware. In Proc. 25th Hawaii Int’l Conference on Systems Sciences, January 1991.

    Google Scholar 

  23. Craig Chambers. The Design and Implementation of the SELF Compiler, an Optimizing Compiler for an Object-Oriented Programming Language. PhD thesis, Stanford University, March 1992.

    Google Scholar 

  24. John Ousterhout. Why aren’t operating systems getting faster as fast as hardware? In USENIX Summer Conference,pages 247–256, Anaheim, California, June 1990. IEEE Press.

    Google Scholar 

  25. Andrew W. Appel and Kai Li. Virtual memory primitives for user programs. In Proceedings of the Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 1V), pages 96–107, April 1991. Santa Clara, CA.

    Google Scholar 

  26. Paul R. Wilson. Operating system support for small objects. In International Workshop on Object Orientation in Operating Systems, Palo Alto, California, October 1991. IEEE Press. Revised version to appear in Computing Systems.

    Google Scholar 

  27. Paul R. Wilson, Shubhendu S. Mukherjee, and Sheetal V. Kakkad. Anomalies and adaptation in the analysis and development of prepaging policies. Journal of Systems and Software,1992. Technical Communication, to appear.

    Google Scholar 

  28. Jean-Loup Baer and Gary R. Sager. Dynamic improvement of locality in virtual memory systems. IEEE Transactions on Software Engineering, SE-2(1): 54–62, March 1976.

    Google Scholar 

  29. Vincent Cate and Thomas Gross. Combining the concepts of compression and caching for a two-level file system. In Fourth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS IV), pages 200–209, Santa Clara, California, April 1991.

    Google Scholar 

  30. Michael Burrows, Charles Jerian, Butler Lampson, and Timothy Mann. Online data compression in a log-structured file system. In Fifth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS IV), September 1992.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1993 British Computer Society

About this paper

Cite this paper

Singhal, V., Kakkad, S.V., Wilson, P.R. (1993). Texas: An Efficient, Portable Persistent Store. In: Albano, A., Morrison, R. (eds) Persistent Object Systems. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3209-7_2

Download citation

  • DOI: https://doi.org/10.1007/978-1-4471-3209-7_2

  • Publisher Name: Springer, London

  • Print ISBN: 978-3-540-19800-0

  • Online ISBN: 978-1-4471-3209-7

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics