Jamison Collins (indecent_and_obscene@yahoo.com)
Tue, 30 May 2000 04:14:29 -0700 (PDT)


The key feature of Multics was the desire to share
information. It is mentioned that
modern systems currently permit information sharing
through the use of files--clearly
direct sharing of information in memory is a
preferable solution. Multics permits
this through the use of segments.

Each segment has associated with it it's address in
core, its length, the access permissions
and a present bit. Through the use of the access
permissions, user programs can share
logical entities of information, as opposed to pages,
which are physical entities. However,
segments are a more difficult structure to manage when
it comes to the backing store. Thus
the papre describes how paging and segmentation are
combined to get the benefits of both
systems. Finally, the actual use of segments and
other details(such as how to communicate
the existence of a segment from one program to
another) are discussed.

The proposed virtual memory configuration was
implemented on actual hardware. The other
additional evidence of the soundness of this approach
is the description of the system.

I found it very interesting the degree to which the
segment abstraction was taken--having
directories of segments seems to be a logical and
necessary element to this system, but
I hadn't considered it at the time. I do wonder,
however, if any x86 OS implement a VM system
similar to the one presented here, considering that
the x86 hardware VM support is segmentation

Machine Independent VM

The virtual memory system for Unix provides little
more than simple paging support, Mach
seeks to provide a much more rich and easily portable
VM management. The goal in Mach
is to provide powerful primitives, such as copy on
write and memory mapped files on
all platforms, but to still achieve a high level of

Mach defines 5 primitives--tasks, threads, ports,
messages and memory objects.
Each memory object is backed by a paging server
appropriate to its type. And, each
task keeps the mappings from each virtual address to
the appropriate memory object.
Surprisingly, Mach allows the page size to differ from
that supported by the hardware--it
can be configured at boot time. Mach uses a structure
called the pmap to manage the
lowest level of the memory which implements the
hardware specific page tables.

Benchmarks are presented which demonstrate that the
approach taken in mach is indeed able
to achieve high performance, even beating the
performance of Unix sometimes. However, the
performance of a monolithic, hardware specific
implementation ought to provide an upper
bound on performance of a microkernel OS, which speaks
well for the optimizing talents of
the Mach designers, but doesn't really answer the
question of how much performance would
be gained by employing heavy optimization of the VM
system on a machine specific OS.

It is very surprising to see that such high
performance could be achieved when dealing
with a machine independent implementation of such a
critical resource as VM. Previously
I have wondered by microkernel systems have not been
widely adopted and this paper raises
that question again, as it provides a compelling
argument that such a system could be
used without great losses of performance.

I have often wondered... what if we discovered
that we were threatened... by an outer power,
from outer space... from another planet?
Wouldn't we all of a sudden find that we
didn't have any differences between us at all?
That we were all human beings?

Do You Yahoo!?
Kick off your party with Yahoo! Invites.