Talk:Gotchas, Linux
Neither FreeBSD nor Linux are microkernels. Both are traditional Unix-like kernels that allow loadable kernel modules (a Sun invention).
so how is that not a microkernel?
although they can both be made monolithic -- compile all the stuff you want directly in a giant kernel -- traditionally the linux kernel has been treated as a microkernel and the freebsd kernel as a monolithic block. Can they be one or the other? yes, it depends on how it's configured and how the admin running the box wants it to be. --Dave 14:00, 24 Nov 2005 (EST)
here's how
A true microkernel conceptually runs drivers as separate processes. In reality they may share the same address space for performance reasons, but the programming style follows a design of everything being split out. The idea was to have simple components, ignoring the issue of complicated interactions. (glue isn't free)
Many microkernel systems evolve into monolithic systems through lack of discipline and caving to performance demands. The first microkernel feature to be lost is the use of separate address spaces. After a while, the developers stop pretending that they have a microkernel. This happened to Windows NT.
Sometimes a so-called "microkernel OS" is kind of fake. For example, Mac OS X contains code from the Mach microkernel. Instead of using the microkernel as a microkernel though, a BSD kernel was grafted on.
For a true microkernel design, look at GNU HURD.
Microkernels do have a few minor advantages, but generally they are bad. The academic research that pushed microkernels was seriously dishonest, benchmarking very bad monolithic kernels against optimized and very limited microkernels. Microkernel advantages tend to involve extreme NSA-level security and distributed systems. Performance is generally bad though, and maintainability turned out to be worse than with monolithic kernels.
24.170.177.130 01:40, 25 Nov 2005 (EST)