Review: Machine-Independent Virtual Memory Management in Mach

From: Sellakumaran Kanagarathnam (sellak_at_windows.microsoft.com)
Date: Mon Feb 16 2004 - 15:31:06 PST

  • Next message: ahemavathy: "Mach Memory Management Review"

    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.


  • Next message: ahemavathy: "Mach Memory Management Review"

    This archive was generated by hypermail 2.1.6 : Mon Feb 16 2004 - 15:30:57 PST