User-level Management of Kernel Memory

  • Author:

    Andreas Haeberlen and Kevin Elphinstone

  • Source:

    Proceedings of the Eighth Asia-Pacific Computer Systems Architecture Conference (ACSAC'03), Aizu-Wakamatsu City, Japan, September 23-26, 2003

  • Date: 23.-26.09.2003
  • Abstract:

    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:

    @InProceedings{haeberlen03KernelMemory,
      author = {Andreas Haeberlen and Kevin Elphinstone},
      title = {User-level Management of Kernel Memory},
      booktitle = {Proceedings of the 8th Asia-Pacific Computer Systems Architecture Conference},
      address = {Aizu-Wakamatsu City, Japan},
      month = sep # "~24--26",
      year = 2003
    }