Supporting Persistent C++ Objects in a Distributed Storage System
Anand Ranganathan, Yury Izrailevsky, Sai Susarla, John Carter, and
The Flux Research Group
Department of Computer Science
University of Utah
50 S. Central Campus Drive Rm. 3190
Salt Lake City, Utah 84112-9205
We have designed and implemented a C++ object layer for Khazana, a
distributed persistent storage system that exports a flat shared address
space as its basic abstraction. The C++ layer described herein lets
programmers use familiar C++ idioms to allocate, manipulate, and
deallocate persistent shared data structures. It handles the tedious
details involved in accessing this shared data,
replicating it, maintaining consistency, converting data
representations between persistent and in-memory representations,
associating type information including methods with objects, etc.
To support the C++ object layer on top of Khazana's flat storage
abstraction, we have developed a language-specific preprocessor that
generates support code to manage the user-specified persistent C++
structures. We describe the design of the C++ object layer and the
compiler and runtime mechanisms needed to support it.
The full paper that appeared at the
ACM SIGPLAN Workshop on Compiler Support for System Software
(WCSSS'99), May 1, 1999, Atlanta, GA, is also available.