Multiversioning and logging in the Grasshopper kernel persistent store

The Grasshopper operating system supports persistence of all system entities including computations. It also makes strong guarantees about the consistency of the system after a restart. A central part of the implementation of this is the store used for kernel meta-data. The store is designed to accommodate a number of different consistency strategies which may be broadly classed as either pessimistic or optimistic. Existing persistent stores use pessimistic approaches which ensure that the the on-disk image of the store is always consistent. An optimistic approach is one that does not guarantee a consistent on-disk image; any inconsistencies are eliminated at recovery time. The main benefit of this approach is the reduction of disk accesses during normal operation. Most existing persistent stores use shadow paging to move from one consistent state to the next. This is not possible when optimistic strategies are used. Therefore, the Grasshopper kernel store uses a new approach, based on multi-versioning and logging, that can support both pessimistic and optimistic consistency strategies. >

[1]  Arthur P. Goldberg Transparent Recovery of Mach Applications , 1990, USENIX MACH Symposium.

[2]  Willy Zwaenepoel,et al.  Recovery in distributed systems using asynchronous message logging and checkpointing , 1988, PODC '88.

[3]  Jeffrey F. Naughton,et al.  Real-time, concurrent checkpoint for parallel programs , 1990, PPOPP '90.

[4]  Roy H. Campbell,et al.  Choices (class hierarchical open interface for custom embedded systems) , 1987, OPSR.

[5]  Jiannong Cao,et al.  Causality considerations in distributed, persistent operating systems , 1994 .

[6]  Colin J. Fidge,et al.  Timestamps in Message-Passing Systems That Preserve the Partial Ordering , 1988 .

[7]  Graham Hamilton,et al.  The Spring Nucleus: A Microkernel for Objects , 1993 .

[8]  David B. Johnson,et al.  Recovery in Distributed Systems Using Optimistic Message Logging and Checkpointing , 1988, J. Algorithms.

[9]  Paul R. Wilson,et al.  Pointer swizzling at page fault time: efficiently supporting huge address spaces on standard hardware , 1991, CARN.

[10]  Ronald Morrison,et al.  Persistent object management system , 1984, Softw. Pract. Exp..

[11]  Alan Dearle,et al.  Casper: A Cached Architecture Supporting Persistence , 1992, Comput. Syst..

[12]  Partha Dasgupta,et al.  The Clouds distributed operating system: functional description, implementation details and related work , 1988, [1988] Proceedings. The 8th International Conference on Distributed.

[13]  Richard L. Sites,et al.  Alpha Architecture Reference Manual , 1995 .

[14]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[15]  Ronald E. Barkley,et al.  A lazy buddy system bounded by two coalescing delays , 1989, SOSP '89.

[16]  Robert E. Strom,et al.  Optimistic recovery in distributed systems , 1985, TOCS.

[17]  Michael F. Challis Database Consistency and Integrity in a Multi-User Environment , 1978, JCDKB.

[18]  John Rosenberg,et al.  Grasshopper: An Orthogonally Persistent Operating System , 1994, Comput. Syst..

[19]  Rasool Jalili,et al.  Using directed graphs to describe entity dependency in stable distributed persistent stores , 1995, Proceedings of the Twenty-Eighth Annual Hawaii International Conference on System Sciences.

[20]  Ronald Morrison,et al.  An Approach to Persistent Programming , 1989, Comput. J..

[21]  Alfred L. Brown,et al.  Persistent object stores , 1988 .

[22]  William A. Wulf,et al.  HYDRA/C.Mmp, An Experimental Computer System , 1981 .

[23]  James Leslie Keedy,et al.  Architectural Support for Software in the Monads III Computer Design , 1982, GI Jahrestagung.