Virtual Memory Management in SPIN

Mon Jul 7 13:59:10 1997
Yasushi Saito


Overview

SPIN manages three kinds of memory, traced heap, untraced heap and user virtual memory. The traced heap and untraced heap are used by spincore and in-kernel extensions. (the difference between traced heap and untraced heap is that the former is garbage collected, but the latter is not. The traced heap is used by Modula-3 codes, and the untraced heap is used primarily by C codes). User virtual memory is used by user space applications, but it may be used by extensions to store bulk data, eg, by the file cache manager. This section describes the management of user virtual memory. Ask other people(i.e., Pardy) about the traced and the untraced heaps.

User virtual memory is managed by the cooperation of Spincore and several extensions, including vmcore.

Spincore manages two types of objects, PhysAddr.T and Translation.T. They are abstractions for a page frame and an address space(pmap), respectively. Spincore supports allocation and deallocation of PhysAddr.Ts, and mapping and unmapping of PhysAddr.Ts onto Translation.Ts.

The vmcore extension provides MemoryObject.T, the memory object abstraction similar(but not same) to that provided by Mach.

There are two other extensions that subtype MemoryObject.T to provide some standard memory management facilities. The default pager extension implements a subtype of MemoryObject.T that swaps pages to disks. The inode pager extension caches file contents on memory objects.


yasushi@cs.washington.edu