On Tue, May 25, 1999 at 11:36:02PM +0000, Brendan Simon wrote:
> Could you please qualify this.  What are the advantages/disadvantages of a
> large monolithic-kernel versus a small micro-kernel.  I am not an operating

I don't have time for a detailed argument -- and this is not the place for
it. Liedke's article on L4 is the most recent strong case for microkernels.
It's easy to find on the net. My belief is that microkernels are poor
design because they separate components that need close collaboration.
Virtual memory, process control, i/o all are intimately connected. For
example, the VM system needs to know that data from a file is treated
diffeently if it is being executed than if it is being read. In a 
"monolithic" kernel, the subsystems can be connected in an organic
manner, but a microkernel imposes an order that is simple seen from
outside, but exceptionally awkward within the OS. The RTlinux design
is a classic case of how microkernels have it wrong: nobody designed 
a microkernel with "RT" and "NON-RT" components, but that turns out to
be a natural way to split things.  And loadable kernel modules give
most of the modularity extensibility advantages claimed for microkernels
without the performance loss.

One of the results of the Mach experiment was that performance required
moving more and more "server" code into the "microkernel". The problem
is worse on modern processors where TLB and cache misses are very
expensive.
        User ->send request -> Kernel -> deliver request -> server -
       
        server reply -> kernel -> deliver reply -> User wake up 

       5 context switches

       User -> kernel -> User

       2 context switches, easily optimized to not cause tlb misses.

       And in a true microkernel, the server may need to talk to another
       server etc -- so things get worse.

L4 is very nicely designed and its designers boast only a 5% slowdown
from monolithic. But I'm more interested in a 20% speedup of monolithic.


Well, enough soapbox. You can find many papers on this subject on the
net.


--- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
----
For more information on Real-Time Linux see:
http://www.rtlinux.org/~rtlinux/

Reply via email to