Managing Code Complexity in a Portable Microkernel
-
Author:
Uwe Dannowski
-
Source:
Proceedings of the ECOOP Workshop on Programming Languages and Operating Systems at ECOOP 2004 (ECOOP-PLOS'04), June 15, 2004, Oslo, Norway
- Date: 15.06.2004
-
Abstract:
Increasing code complexity can become a serious issue even in a software project as small as a microkernel. This paper reports on how we address this problem in the L4Ka::Pistachio microkernel.
We define multiple configuration dimensions and assign code fragments to the appropriate dimensions. The kernel build system combines code fragments for the specific configuration. While this approach avoids the run-time costs of a full-blown object-oriented design, it does not avoid code duplication.To address the code duplication problem, we model the code selection with class hierarchies using multiple inheritance and polymorphism. However, the run-time overhead of virtual functions results in a serious (2x) performance hit for the time-critical kernel functionality.
To address this latter problem, we apply class flattening to completely eliminate the overhead of virtual function calls. Our evaluation shows that a kernel with flattened class hierarchies performs as fast as one without class hierarchies. Thus, advanced object-oriented programming techniques need no longer be avoided in performance-focused microkernels.
BibTex:
@InProceedings{Dannowski04Managing,
author = {Uwe Dannowski},
title = {Managing Code Complexity in a Portable Microkernel},
booktitle = {Proceedings of the ECOOP Workshop on Programming Languages and Operating Systems at ECOOP 2004 (ECOOP-PLOS'04)},
address = {Oslo, Norway},
month = jun # "~15",
year = 2004,
affiliation = {University of Karlsruhe, Germany}
}