From: Sellakumaran Kanagarathnam (sellak_at_windows.microsoft.com)
Date: Mon Feb 16 2004 - 15:31:06 PST
This paper describes the design and implementation of
machine-independent memory management within Mach operating system.
Portability to different hardware was one of the main goals and the
paper explains how that was achieved.
The paper discusses the different abstractions in Mach design, the
various memory management data structures used in Mach, then it talks
about porting the VM, describes the uniprocessor and multiprocessor
issues and gives some measurement results. The machine dependent code is
kept at minimum and whatever little there is, all of them are confined
to a single module and a header file. This was one of the reasons for
easy portability.
There are five basic Mach abstractions: a task (similar to process), a
thread - basic unit of CPU utilization, a port -a communication channel
which acts as a queue for messages protected by kernel, a message is a
typed collection of data objects and a memory object is collection of
data that can be mapped into the address space of a task. Operations on
objects (other than messages) are done by sending messages to ports.
These way user level tasks can manage system services and resources by
sending messages on appropriate ports.
Every task has a large address space that contains a series of mappings
between ranges of memory addressable to the task and memory objects and
the size of address space is limited only by underlying hardware.
Copy-on-write and read/write sharing of memory is permitted between Mach
tasks. Sharing is done by allocating memory region and setting its
inheritance (shared, copy or none).
Four basic memory management data structures are used in Mach: resident
page table, address map, memory object and the pmap. Pmap is the memory
dependent memory mapping data structure. Mach provides some paging
services inside the kernel. Pagers can also be at the user level and
this is made possible by implementing certain interfaces. Shadow
objects are used in sharing memory. It was interesting to note that VM
was ported to IBM RT PC in 3 months with inexperienced person. The
authors go on to discuss the uniprocessor issues and multiprocessor
issues (automatic cache consistency). The authors finally compare VM
performance in Mach to that of UNIX and most performance measures favor
Mach over UNIX.
I found the user level pager and isolating hardware dependent code to
one single module, sharing to be some of the interesting aspects of the
system.
This archive was generated by hypermail 2.1.6 : Mon Feb 16 2004 - 15:30:57 PST