Via slashdot, Tanenbaum has created a new chapter in the debate between which is better. It’s a great read, even for those not familiar with the debate. Here’s a choice quote:
If you are wondering why microkernels aren’t even more widely used, well, there is a lot of inertia in the system. Why haven’t Linux or Mac OS X replaced Windows? Well, there is a lot of inertia in the system. Most cars in Brazil can run on home-grown ethanol so Brazil uses relatively little oil for vehicle fuel. Why doesn’t the U.S. do that and reduce its dependence on the volatile Middle East? Well, there is a lot of inertia in the system. Getting people to change, even to superior practices, is very hard.
I have always been a fan of the microkernel idea because it enforces a logical separation among components that makes it easier build securely and test an operating system. It is also useful, when you are working on something, to get a sense that there is a clear boundary. In a microkernel, there are no shared data structures across the whole kernel, so if you don’t like the way a module uses it or how the module is designed, you can wipe it out and not worry about breaking other parts of the system. This is a huge plus. Much of why and how we managed to get computers to do such complicated things is based on the idea of building small, simple pieces, and then building more complicated things that use those pieces. A microkernel is basically doing the same thing with operating system concepts.
He also mentions MINIX 1, which, a long time ago when I was an undergraduate I had many chances to play with. Apparently, there is now a MINIX 3. I must admit that right now I am really fighting the urge to download and try it over finishing my thesis… Maybe later.