Trustworthy Systems

User-level management of kernel memory


Andreas Haeberlen and Kevin Elphinstone

Systems Architecture Group
University of Karlsruhe

School of Computer Science and Engineering
The University of New South Wales
Sydney 2052


Kernel memory is a resource that must be managed carefully in order to ensure the efficiency and safety of the system. The use of an inappropriate management policy can weaken the isolation between subsystems, lead to suboptimal performance, and even make the kernel vulnerable to denial-of-service attacks. Yet, many existing kernels use only a single built-in policy, which is always a compromise between performance and generality.

In this paper, we address this problem by exporting control over kernel memory to user-level pagers. Thus, subsystems can implement their own application-specific management policies while independent subsystems can still be isolated from each other.

The pagers have full control over the memory resources they manage; they can even preempt and later restore individual pages of kernel memory. Still, protection is not compromised because the kernel converts its metadata into a safe representation before exporting it. Therefore, pagers need only be trusted by their respective clients.

We describe the model we use to page kernel memory and various techniques for obtaining a safe external representation for kernel metadata. We also report experiences with an experimental kernel that implements our scheme and outline our plans to further develop the approach.

BibTeX Entry

    address          = {Aizu-Wakamatsu City, Japan},
    author           = {Andreas Haeberlen and Kevin Elphinstone},
    booktitle        = {Asia-Pacific Computer Systems Architecture Conference},
    month            = sep,
    paperurl         = {},
    publisher        = {Springer},
    series           = {Lecture Notes in Computer Science},
    title            = {User-Level Management of Kernel Memory},
    volume           = {2823},
    year             = {2003}