23-05-2012, 11:09 AM
A Persistent Operating System for Conventional Hardware
A Persistent Operating System.pdf (Size: 154.15 KB / Downloads: 59)
Introduction
Most persistent systems developed to date have been
constructed above conventional operating systems. The
fact that these operating systems do not provide an ideal
platform for such construction is not surprising since
support for the principles of orthogonal persistence was
not among their design goals. In [21], for example,
Tanenbaum lists the four major components of an
operating system as being memory management, file
system, input-output and process management. In
persistent systems the functionality of the file system and
memory management is replaced by the persistent store.
Many conventional operating systems extend the file
abstraction to encompass input and output, an approach
which is obviously inappropriate for persistent systems.
Some persistent systems require that the state of a
process persists. This is not easily supported using
conventional operating systems.
Related work
Attempts to build persistent systems above
conventional operating systems have encountered
difficulties, caused in part by the fact that these operating
systems were not designed with persistence in mind. For
example, the developers of Napier88 [16] have
experienced unpredictable performance degradation
apparently caused by bottlenecks in Unix. In-depth
knowledge of the internal structure of the operating
system is required to make any substantial performance
improvements.
Aims and goals of this project
In this project we aim to design and implement an
operating system kernel which provides generic
mechanisms capable of being tailored to support a wide
variety of persistence paradigms,
In this sense Grasshopper has similar aims to the
micro-kernel projects [1, 4], but with a specific
orientation towards support for persistence.
The Basic abstractions
An operating system is largely responsible for the
control and management of two entities: objects, which
contain data and processes, the active elements which
manipulate these objects. One of the most important
considerations in the design of an operating system is the
model of interaction between these entities. There are
two principal models of computation which we call the
out-of-process and the in-process models.
Containers
Containers are persistent entities which abstract over
storage and thus provide the environment in which loci
execute. A container may consist entirely of its own
data, or may (recursively) have one or more regions of
other containers mapped onto parts of it. Information
about such mappings is maintained by the kernel.
A locus executing within a container accesses the data
stored in it using container addresses.