Monolothic kernels....
Pros...
1) Easy to write drivers.
2) Fast
3) Simple Design.
cons...
1) 1 faulty driver can crash the whole system.
Microkernels...
Pros...
1) Very Stable, drivers dont run in kernel space, so faulty crashing driver can just be re-started without affecting the rest of the system.
cons
1) A little hader to program.
2) Device Drivers must use message passing instead of driect calling to get anything done... you lose a little performance.
The MacOSX kernel is what they are calling a "Hybrid kernel"
its half monolithic, and half micro.
But this doesnt make much sence to me...
The reason for a monolithic kernel is performance...
so MacOSX uses the FreeBSD kernel to run drivers that need high performance..
for example the 3d graphics cards, networking, disk controlers..
but these things are all the parts of the kernel which are generally less stable, and more likely to crash the system.
Whats the point in having a half microkernel / half monolithic kernel, if every part of the system which would benefit the micro kernel design, is placed into the freeBSD monolithic kernel in the name of performance..
doesnt this sound strange to you ?

