From a software-technology point of view, the microkernel
concept is superior to large integrated kernels.
On the other hand, it is widely believed that (a)
microkernel based systems are inherently inefficient and (b)
they are not sufficiently flexible. Contradictory to this
belief, we show and support by documentary evidence
that inefficiency and inflexibility of current microkernels is
not inherited from the basic idea but mostly from overloading
the kernel and/or from improper implementation.
Based on functional reasons, we describe some concepts
which must be implemented by a microkernel and
illustrate their flexibility. Then, we analyze the performance
critical points. We show what performance
is achievable, that the efficiency is sufficient with respect
to macrokernels and why some published contradictory
measurements are not evident. Furthermore, we
describe some implementation techniques and illustrate
why microkernels are inherently not portable, although
they improve portability of the whole system.
|