What's the difference between Xen and a microkernel? They both manage memory, do CPU scheduling, provide efficient message-passing, protect "processes" running underneath them from each other, and leave almost everything else to the "processes" running underneath them.
> What's the difference between Xen and a microkernel?
Xen allows full OSes to be guests and run on top of it. Microkernels only allow servers to run on top of it, and those servers have to be purpose-written and cannot meaningfully be ported.
Xen doesn't provide hardware abstraction and is fully invisible (except to the extent it advertises itself); microkernels are neither.
Paravirtualization (what you did before VT-x and similar) was an oddity, and blurs these lines a tiny bit, but the distinction is fairly clear otherwise.
> Xen allows full OSes to be guests and run on top of it. Microkernels only allow servers to run on top of it, and those servers have to be purpose-written and cannot meaningfully be ported.
L4 is an archetypal microkernel, and people often run full OSes or other ported software under it, including Linux.
> Xen doesn't provide hardware abstraction and is fully invisible (except to the extent it advertises itself); microkernels are neither.
Microkernels typically don't abstract any hardware other than CPU and memory; any other drivers would run under the microkernel.
And Xen is only "invisible" if you run full hardware virtualization and no paravirtualized drivers.
> Paravirtualization (what you did before VT-x and similar)
People still use "paravirtualization" today; see the "virtio" drivers typically used with KVM.
Their highly-efficient microkernel has been doing so well that most people using it don't know it's in their smartphones. Do most virtualization solutions have a similar impact on user experience? ;)