CSE221 Multics VMM and Mach VMM

Andreas Anagnostatos (aanagnos@cs.ucsd.edu)
Thu, 25 May 2000 16:56:05 -0700

A. Bensoussan, C. T. Clingen, and R. C. Daley, "The Multics Virtual
Memory: Concepts and Design," Communications of the ACM, Vol. 15, No. 5,
May 1972, pp. 308-318.

This paper discusses the virtual memory management of Multics. The whole
system is designed to offer sharing of data among different processors,
each one with his own set of access rules. Information is stored in
segments, which are in turn divided into pages. The authors describe the
process of creating new segments and pages, as well as manipulating the
old ones, in order to make room for new.

I have the feeling that all the operations are very costly and also that
there is a larger than needed amount of supervisor data that has to be
around active all the time. On the other hand, the level of abstraction
provided to the user is optimum, since the only thing he needs to know
is the name of the segment he wants to use, plus the offset of the word
to access. The supervisor takes care of all the work for thereafter.

Richard Rashid, Avadis Tevanian, Michael Young, David Golub, Robert
Baron, David Black, William Bolosky, and Jonathan Chew,
"Machine-Independent Virtual Memory Management for Paged Uniprocessor
and Multiprocessor Architectures," Proceedings of the Second
International Conference on Architectural Support for Programming
Languages and Operating Systems, October 1987, pp. 31-39.

The paper describes the design of the virtual memory manager in the Mach
operating system. Also the authors present the ease of porting Mach to
other architectures such as the VAX family, the IBM RT PC and the SUN 3.
This ease is possible because the memory management is separated into a
software, machine independent module and a hardware, machine dependent
module. The operating system supports large virtual address spaces,
memory sharing as well as optimizations such as copy-on-write.

The authors claim that separating the hardware and software parts did
not affect performance and they present the measurements to prove it. I
am not convinced that the measurements prove that though. I believe that
the fact that the Mach is faster than UNIX means that the implementers
did a better job in the Mach. They should have compared the
separated-module Mach with a version of a merged-module Mach. Usually
you do not expect to improve performance by splitting a program into
modules, the best you can hope for is not to worsen it.