Linked by Thom Holwerda on Tue 9th May 2006 21:25 UTC, submitted by luzr
OSNews, Generic OSes Torvalds has indeed chimed in on the micro vs. monolithic kernel debate. Going all 1992, he says: "The whole 'microkernels are simpler' argument is just bull, and it is clearly shown to be bull by the fact that whenever you compare the speed of development of a microkernel and a traditional kernel, the traditional kernel wins. The whole argument that microkernels are somehow 'more secure' or 'more stable' is also total crap. The fact that each individual piece is simple and secure does not make the aggregate either simple or secure. And the argument that you can 'just reload' a failed service and not take the whole system down is equally flawed." My take: While I am not qualified to reply to Linus, there is one thing I want to say: just because it is difficult to program, does not make it the worse design.
Thread beginning with comment 122877
To read all comments associated with this story, please click here.
My Take
by Mystilleef on Wed 10th May 2006 00:00 UTC
Mystilleef
Member since:
2005-06-29

Linus is just being practical. I don't think the people clamouring for Microkernels understand the tradeoffs of developing a plug-in based architecture. Those kinds of architecture are exceedingly complex to design, that almost nobody gets it right the first time, if ever they do. Now bump that challenge up to the scale of a project like the Linux kernel

Sure, on paper you read about how plug-in system and then you say to yourself, this is how every app should be developed. Well, until you are actually begin to write one yourself and then you realise not only are such system much tougher to design, they can be expensive to maintain.

I had the same dilemna with concurrent programming. Got brainwashed by the acadamia about how concurrent programming is the one true way and how apps should be designed in a concurrent manner, etc. It was supposed to make your app faster, better designed, modular etc. Nobody told me debugging the application would be a pain, or locking can be a serious problem, or that you have to be careful with libs that don't support threading among a slew of other issues. I learnt all these the hard way.

I love micro kernel architecture as much as the next geek, but even I know it will be expensive to design, maintain and will much likely be slower than the monolithic style kernel. Modularity comes at a cost the academia don't want you to know. It makes your apps slower and consume more system resources. You also have to spend a significant amount of time designing an intelligent core, or manager, and that's the hard part. It's hard because you'd spend years trying to get it right (Okay, I'm sure it won't take that long for experienced and talented kernel hackers like the Linux guys). The benefits of Microkernels only pay of in the long run after making several mistakes and being bitten by the bug called reality.

It sounds fantastic on paper, but my guts tell me it's going to be bitch to implement correctly. That's why there are not too many successful micro kernel projects out there. I still like the ideas behind Microkernels and Plug-in like architectures, but I'm well aware of their limitations.

Edited 2006-05-10 00:01

Reply Score: 2