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 122920
To read all comments associated with this story, please click here.
Abstraction, Microkernels and OS X
by logicnazi on Wed 10th May 2006 03:05 UTC
logicnazi
Member since:
2005-09-21

First of all to all of those who keep pointing to OS X it is worth pointing out that it is NOT a real microkernel. As I understand it the whole BSD layer runs as part of the kernel in OS X. It starts out with what was a microkernel but then runs it like a monolithic kernel (at least in my understanding).

Ultimately the point is that microkernels can't, either in principle or in practice, be as efficent as a monolithic kernel and apart from fault isolation they just don't give any benefits.

This isn't to say that the microkernel *idea* of seperating things into well defined components that each do a simple task isn't often a good idea. However, one can always take this idea and implement it as a logical division during development but don't compile it down into seperate address spaces.

Ultimately the only benefit to microkernels is fault isolation (the bit about restarting that service) because all other benefits can be replicated through appropriate design and language features in a monolithic kernel.

Now I think Linus goes too far in totally dissing any benefits from fault isolation. Some parts of a traditional monolithic kernel can be put out in a seperate address space with little performance impact and serious benefits in terms of stability. The lessons learned from microkernels to enable fast message processing should certainly be adopted by macrokernels to enable this sort of feature.

HOWEVER, for an end user it really isn't helpful if integral parts of the system can crash without bringing down the kernel. Thus for these parts of the system there is simply no benefit from putting them in a seperate address space and thus any performance hit decides the issue.

Reply Score: 3