Browse Prior Art Database

Critical Page Caching in an External Memory Manager

IP.com Disclosure Number: IPCOM000116815D
Original Publication Date: 1995-Nov-01
Included in the Prior Art Database: 2005-Mar-31
Document File: 4 page(s) / 215K

Publishing Venue

IBM

Related People

Monahan, C: AUTHOR [+2]

Abstract

The IBM* Microkernel incorporates the idea of Memory Mapped I/O. Memory mapped I/O is a general term applied to the concept of accessing persistent storage (disks, etc.) as ranges of memory in a the virtual address space of a user's task. Offsets in these ranges of memory are mapped to data appearing on a storage device, and when memory in these ranges are accessed, the associated data is transferred to/from the storage device. The retrieved and/or updated data is retained in RAM memory, and is used to back the applicable memory ranges. The RAM memory used for this purpose ends up serving as an effective data cache for the devices in question.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 24% of the total text.

Critical Page Caching in an External Memory Manager

      The IBM* Microkernel incorporates the idea of Memory Mapped
I/O.  Memory mapped I/O is a general term applied to the concept of
accessing persistent storage (disks, etc.) as ranges of memory in a
the virtual address space of a user's task.  Offsets in these ranges
of memory are mapped to data appearing on a storage device, and when
memory in these ranges are accessed, the associated data is
transferred to/from the storage device.  The retrieved and/or updated
data is retained in RAM memory, and is used to back the applicable
memory ranges.  The RAM memory used for this purpose ends up serving
as an effective data cache for the devices in question.

Memory Objects - Though they often are not aware of it, users
seldom wish to access storage devices in a strictly sequential
fashion.  Even if the user perceives a data file as a single sequence
of bytes, file systems often break the user's data into multiple
pieces so that they can best take advantage of the available free
space on the storage devices.  File systems also store special
structures on the devices that associate the different pieces so that
the sequential set of bytes that represents the user's file can be
reconstructed later, and the attributes of the data (such as creation
data or access permissions) can be retained with the file.  All of
the data associated with a given file that the file system maintains
that doesn't represent user's data is referred to as that file's meta
data.  A file system's meta data may also be broken-up and spread-out
across the disk to meet resource or performance constraints.

      This fracturing of the data leads to the concept of a memory
object.  It would be of little use to memory map an explicit region
of the disk if that region only contains a small piece of the data
that the caller wants to access.  A memory object is a single
reference to an set of data on a storage device that the caller wants
to have mapped into a single region of memory.  The caller does not
care how the data is broken-up on the disk, but rather wants all of
the little pieces reconstructed so that the data can be accessed as a
sequential stream of bytes in memory.

The Pager and the EMMI - The IBM microkernel supports the concept
of memory objects and provides support for memory mapped I/O through
a virtual memory function called vm_map().  The microkernel, like the
caller, also does not care how the data within the memory object is
obtained.  To support the vm_map() call, the microkernel talks to a
specialized program called the External Memory Manager or Pager.  It
only refers to the memory object in question with offsets and lengths
within the memory object to reference the data.  The interface
defined by the microkernel to talk with pagers is called the External
Memory Manager Interface (EMMI).  This interface is well defined and
standardized so that third parties can create multiple external...