Last days I've summarized my opinions about different architectures of the operating systems kernels such as classic monolitic kernel, as an exokernel and microkernel.
Summarizing, all concepts have a self weak points and we're need to select a better solution that will correlating a perfomance, stability and security.
In this case I take a look to the microkernel architecture.
The some myth with the microkernels:
- Low perfomance, do you ready to loss just 5-10% of perfomance switching to the stable OS? I think your reply is yes. Many systems use there resources for the overloaded interface or architecture addons that trying to do a best stability. In example a nooks layer in the linux kernel, or solution from the microsoft research - singularity, that not so good, because it's takes points from the perfomance and look like an ugly addon to the worth architecture.
- Non trivial implementation, it's sounds with smiley. On the same deal it's not a true. Just compare simply of the GNU mach microkernel with linux kernel, or minix3 with the *bsd kernel. Of couse you can said that - "the linux kernel contains a big set of the drivers for devices, filesystems etc ...", but just think how it's hard to maintain this. Microkernel haven't a large number of the source code lines, it's a simple to review it, fix and update with new things, that makes it more pretty for maintain and fixing.
Just imaginate that you have a stable and secure system with all included innovations if needed. It's like a software on your mp3/ogg player that can works stable for many times without updates and many more things that you need on the linux or m$ windows.
All kernel servers are separated from each other and device driver in example cannot down all the system, in example you are working with the big document and some device driver (for your scsi controller in example) falling off, in this case all the request in the microkernel are cached and system process reload this driver and reply the requests, and you are continuing the job thinking that nothing happened, on the classic kernels you will take a look to the kernel panic or BSoD and all your job will be lost.
In addition, did you see a good abstraction in the Operating System, where you don't think about file system location? This is a simple job for the microkernel architecture.
In example, you came to the office and turn on your notebook the system detects your placement and starting to work with the office shared filesystem, and you don't care where is it located? What I need to mount/ add the volume to do this job - I really don't care. On both systems *nix and m$ windows I need to mount a NFS volume or add the logical volume via windows network and take care with back up ones or other things.
By the way, with the microkernel you don't need to have hardcoded things that can affect your perfomance and other varios things, all is modular.
Like a postscript I want to tell you - user friendly system is a not a system with pretty look interface, it's a stable and simple system for both end-users and developers, where you don't think about system security and permanent drivers installations and rebooting.