Untitled-1

Back to the previous slide, on to the next slide or up to the storage overview

The microstorage kernel, or microstore for short, provides the basic building blocks for constructing higher level storage systems. The microstore does not specify any particular storage policy. Rather, it is provides the mechanisms for implementing the policy specified by a storage server. The facilities provided by the microstore are intended to be langauge independent. They should be viewed as an operating system extension that is available to all programming languages. This precludes using linguistic mechanisms that are not universally available, unfortunately.

The basic building block provided to the storage servers by the microstore are segments, which should be viewed as variable sized blocks of data that are maintained contiguously on the disk. Although there are certain differences that we will not go into here, the storage server developer can view these segmentsas the disk blocks of the storage system. Thus a Unix style file system might choose to only use 4 kilobyte segments, while a multimedia storage system would use larger segments and an object oriented server might use segments of varying sizes.

Attached to each segment, but invisible to the client programs, is a set of properties that are used by the microstore for bookkeeping and are available to the storage servers for their own purposes.

The microstore provides a globally unique identifier for each segment. Combined with a segment offset, this permits the creation of links, or pointers, between segments. The global nature of the segment identifier means that links can point across machine boundaries. The microstore provides a reference count mechanism for dealing with most of the reclamation issues and general garbage collection for dealing with cycles that cannot be dealt with using reference counts.

Richard Zippel