Next Previous Contents

# RVM: Recoverable Virtual Memory, Release 1.3

## Henry M. Mashburn, Mahadev Satyanarayanan, David Steere, Yui W. Lee,
School of Computer Science, Carnegie Mellon University

Thanks "This research was supported by the Defense Advanced Research Projects Agency (Avionics Lab, Wright Research and Development Center, Aeronautical Systems Division (AFSC), U.S. Air Force, Wright-Patterson AFB, Ohio, 45433-6543 under Contract F33615-90-C-1465, ARPA Order No. 7597). The views and conclusions in this document are those of the authors and do not represent the official policies of the funding agency or Carnegie Mellon University."17 September 1997

"RVM provides an unstructured recoverable virtual memory. The recoverable storage is represented by Unix files or disk partitions that applications can map at page granularity into the address space of a process. Simple, non-nested atomic transactions guarantee permanence of changes to recoverable storage across system crashes. Applications can schedule transaction logging actions to enhance performance. The design stresses simplicity, ease of use, and high performance. Unix compatibility is standard, while optional Mach-specific extensions are supported for additional flexibility and performance. RVM has been extensively used in the clients and servers of the Coda File System, and in the Venari system.",

## 1. Introduction

- 1.1 Design Assumptions

## 2. The RVM Design

- 2.1 Recoverable Storage
- 2.2 Transactions
- 2.3 Concurrency in RVM
- 2.4 Good Programming Practice

## 3. RVM Library Specifications

- 3.1 RVM Files and Structures
- 3.2 Initialization, Options and Mapping
- 3.3 Statistics Collection
- 3.4 Address, Length, and Offset Arithmetic

## 4. Library Functions

- 4.1 Initialization, Options, and Mapping Functions
- 4.2 Transaction Functions
- 4.3 Log Control Operations
- 4.4 Query and Statistics Functions

## 5. RVM Segment Loader

## 6. RDS, A Dynamic Heap Allocator for RVM

- 6.1 Introduction to RDS
- 6.2 Transactions and RDS

## 7. RVM Internals

- 7.1 Overview of RVM internal structure
- 7.2 RVM application programming interface
- 7.3 Structure of log
- 7.4 Internal Data Structure
- 7.5 RVM in action
- 7.6 RVMUTL

## 8. rvmutl, the RVM Maintenance Utility

## Appendix

## 9. RVM Import and Installation Instructions

- 9.1 Differences from Previous Versions
- 9.2 Importing RVM
- 9.3 Machine/OS Dependent Fixes
- 9.4 Installing RVM
- 9.5 Testing RVM
- 9.6 The Benchmark
- 9.7 Contact with RVM Maintainers

## 10. C Declaration for RVM

Next Previous Contents