Microkernels are quite attractive to academic computer science researchers
Recently there was a Stackoverflow question
that asked why Tanenbaum was wrong in his predictions for the future
in the Tanenbaum/Torvalds debate. This got me thinking about
microkernels (one of Tanenbaum's predictions was that microkernels
were the future of operating system design). In particular, it got
me thinking that microkernels have a bunch of properties that make
them almost uniquely attractive for academic operating system
researchers. For background, I recommend Rob Pike's System
Software Research is Irrelevant
[PDF] for an idea of the constraints and environment that academic
OS research exists in.
To start with, let's admit that the idea of microkernels is attractive
in general. Of course we'd like there to be a minimal, elegant set of
simple operations that we could use to easily compose operating systems
from. It's no wonder that microkernels are by and large a dream that
won't die. Beyond that, the attractive properties of microkernels for
academic research include:
- microkernels are small in both scope and (hopefully) code size. Small
projects are achievable projects in academic research.
- a microkernel is naturally limited in functionality, so you have an
excellent reason to not implement a lot of things. This drastically
reduces the scope of your work and gives you a great excuse for
not coding a lot of boring, routine infrastructure that's necessary
for a usable system.
(Note that in academic research you basically cannot afford to
implement things that will not result in papers, because papers
are your primary and in fact only important output.)
- microkernels are (strongly) modular, which makes it easier to farm out
work among a bunch of students, postdocs, and research assistants.
A strong division of labour is important not just for the obvious
reason but because it increases the number of papers that all of
the people working on the project can collectively generate. If
everyone is involved in everything you probably get one monster
paper with a monster author list, but if people are working mostly
independently you can get a whole bunch of papers, each with a
small number of authors.
(And if someone wants to get a MSc or PhD thesis out of their work,
they have to be working on their own.)
- microkernels have a minimal set of primitives, which makes it easy to
write papers about them. You don't have to try to describe a large,
complex OS and what makes it interesting; you can simply write a paper
about the microkernel primitives you chose (and perhaps some clever way
that you implemented them and made them acceptably fast).
- there are lots of choices for viable primitives and thus lots of
different microkernel designs, which means that it's easy to do
new work in the field; all you have to do is pick a set of
primitives that no one has used yet.
- there is a strong liking for elegant minimalism in basically all
parts of academic computer science. The minimalism of microkernels
plays right into this overall attitude.
- the whole 'normal kernel on microkernel' idea of porting an
existing OS kernel to live on top of your microkernel gives you
at least the hope of creating a usable environment on your
microkernel with a minimum amount of work (ie, without implementing
all of a POSIX+ layer and TCP/IP networking and so on). Plus some
grad student can probably get a paper out of it, which is a double
- the drawbacks of microkernels are mostly at the pragmatic levels of
actual performance, which academics mostly don't care about and don't
get called on. You can excuse relative performance figures against
something like Linux or FreeBSD by saying that your microkernel has
not had the kind of optimization that those OSes have had, or that
the performance loss is worth it for some benefit that microkernels
are supposed to give you.
- in academic computer science you do not have to actually prove any
claims that your microkernel is more reliable, easier to write
software for, or the like than traditional kernels. In fact it's
not clear how you would prove such claims; productivity and
reliability claims are notoriously hard to validate because there
are so many variables involved.
I don't know exactly why Tanenbaum thought that microkernels would
clearly win, but I suspect that the unusual attractiveness of
microkernels to academic researchers like him didn't hurt.
(It's also worth noting that back in the very early 1990s of the
Tanenbaum/Torvalds debate, microkernels were much newer and much less
thoroughly beaten to death than they are today. It was much easier to
believe that they were the new hotness and solution to our operating