Tuesday, May 16, 2006

Xen Becoming a Microkernel?

Keith Adams has posted an entry about his thoughts on microkernels. I completely agree with his argument. He makes a curious point though at the end of the article:

Xen has been carefully, and somewhat silently transmogrifying itself into a microkernel.

What I find curious about this statement is that I think the inverse is actually true. Historically, starting in the 2.0.x series, Xen owes quite a bit of it's design to the Nemesis exokernel. A lot of the things that seem out of place in a hypervisor (event channels and usage of the nomenclature of domains) are actually vestiges of Nemesis.

Xen is not becoming a microkernel, rather it was an exokernel and is becoming more monolithic. This leads to a more interesting topic of debate (that I think Keith is partially alluding to). Do the same arguments about about microkernel vs. monolithic kernel apply to hypervisors?

I've always thought an interesting patch to Linux would be one that allowed the kernel to exist in 64mb. However, even this may be unnecessary. As VT/SVM hardware improves over time, and the cost of a switching address spaces during an exit decreases (thanks to tagged TLBs), it really stops mattering.

It's an interesting thing to think about...