Two objects AddressSpace.T and MemoryObject.T play role in the VMcore extension.
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.
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.
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).