Improving Operating System Decomposition by Microkernel Design

  • Typ:Diplomarbeit
  • Datum:15.12.2008
  • Betreuung:

    Prof. Dr. Frank Bellosa, Jan Stoess

  • Bearbeitung:Sebastian Reichelt
  • Links:PDF
  • Abstract: 

    There have been numerous attempts to decompose operating systems into multiple servers running on top of a microkernel. Decomposition offers a lot of advantages, such as better security and robustness, flexibility with respect to changing requirements, reusability of servers in different contexts, and maintainability due to clearly defined roles and interfaces. Yet, multi-server operating systems often turn out to be significantly more complex than their monolithic counterparts. This architectural overhead increases disproportionally to the number of components, thereby imposing a limit on the achievable granularity.

    A major factor is the programming model which all microkernels explicitly or implicitly enforce on servers designed for them. A server always consists of both the code that performs its particular task within the operating system, and the glue code that maps the nature of the task onto the concepts of the underlying microkernel. If a multi-server OS turns out to be more complex than a monolithic OS performing the same tasks, then all of the additional complexity stems from the necessary glue code.

    We postulate that fine-grained decomposition can be achieved by defining a suitable programming model for servers, designed in a way that minimizes the amount of glue code required. The key to this approach is our definition of servers as light-weight, universal components, which, instead of glue code, contain additional information describing their role and interaction. In this thesis, we build a prototype multi-server OS to evaluate in how far the model improves operating system decomposition.

    The results are largely positive: The programming model has turned out to be suitable for various different types of system components. The components in our system are as fine-grained as possible from a technical point of view. Although a direct translation of existing interfaces to our programming model can be problematic, existing code can feasibly be reused when adapted to our own interfaces. However, the performance of our system is not satisfactory yet, possibly requiring modifications to the programming model.


      author = {Sebastian Reichelt},
      title = {Improving Operating System Decomposition by Microkernel Design},
      type = {Diploma Thesis},
      address = {System Architecture Group, University of Karlsruhe, Germany},
      month = dec # "~15",
      year = 2008,
      url = {}