Reducing Overhead in Microkernel Based Multiserver Operating Systems through Register Banks

  • Subject:System Architecture
  • Type:Study Thesis
  • Date:08.10.2010
  • Supervisor:

    Prof. Dr. Frank Bellosa, Raphael Neider

  • Graduand:Sebastian Ottlik
  • Links:PDF
  • Abstract:

    Reduced performance is generally considered to be a drawback of microkernel based multiserver operating systems. The reason for this loss of performance is that typical operating system services, performed by the kernel in traditional systems, are provided by the kernel and several user mode servers in a multiserver operating system. As a result, performing these services requires a number of thread switches as well as kernel entries and exits, whereas in a traditional system only one kernel entry and exit usually suffices.

    In modern systems with a tagged TLB and a dedicated system call instruction most of the costs of a thread switch or kernel entry result from preserving register contents in memory. Existing approaches to reduce these costs typically improve the performance of kernel entry by delaying register preservation to thread switching. If a kernel entry is followed by a thread switch - a frequent situation in systems using a microkernel - these approaches do not improve total system performance.

    In this thesis I present a mechanism that can be used to increase the performance of thread switching and kernel entry and exit by selection of a bank of register file memory instead of exchange of register contents using main memory. I describe in which way it can be used by a kernel and its implementation in the OpenProcessor platform as well as its use by the associated kernel to increase kernel entry and exit performance. Evaluation has shown that it can be used to decrease system call overhead by 10% while providing further possibilities of performance optimization.


      author = {Sebastian Ottlik},
      title = {Reducing Overhead in Microkernel Based Multiserver Operating Systems through Register Banks},
      type = {Study Thesis},
      address = {System Architecture Group, University of Karlsruhe, Germany},
      month = oct # "~8",
      year = 2010,
      url = {}