|
Managing Code Complexity in a Portable Microkernel
Uwe Dannowski
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.
In Proceedings of the ECOOP Workshop on Programming Languages and Operating Systems at ECOOP 2004 (ECOOP-PLOS'04), June 15, 2004, Oslo, Norway
Full paper: [pdf]
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)},
year = 2004,
address = {Oslo, Norway},
month = Jun,
affiliation = {University of Karlsruhe, Germany},
url = {http://l4ka.org/publications/}
}
|