VMcore

VM extension is built on top of the spincore VM to provide more user friendly services.

Two objects AddressSpace.T and MemoryObject.T play role in the VMcore extension.

AddressSpace object

A virtual address space is represented by the AddressSpace.T object. AddressSpace.T is a subtype of Translation.T which is defined in the spincore. It allows for mapping and unmapping of memory objects, which are described below.

Note: AddressSpace.T is further subtyped into Space.T. In addition to all the functions of AddressSpace.T, Space.T provides easy-to-use memory allocation and deallocation routines. We plan to phase out Space.T soon. It now exists mainly for the backward compatibility reason.

Memory Object

MemoryObject.T is a container of physical page frames. Memory cannot be allocated on an address space directly; it first has to be allocated on a memory object, and then the memory object is mapped on the address space. A memory object can be mapped on more than one address spaces(or more than one virtual address regions on a single address space). Thus, memory object serves as a unit of memory sharing.

Internal structure of memory object

Internally, a memory object consists of two objects, cache and pager. Cache holds a set of page frames. All the frames owned by a memory object is stored in the cache object.

Pager implements a mechanism to transfer pages to and from memory and an external I/O device(disk, network, etc).

Varieties of Pagers

Pager is expected to be subtyped. Currently, two types of pagers are provided, Bogopager and Filepager.