|
|
|
|
|
by aidenn0
3826 days ago
|
|
Having worked with a modern microkernel, 20% is a fair number for device drivers that are not doing bulk data transfers, if you both avoid shared memory and are on an platform that lacks hardware features for accelerating such things, though the OS's choices of IPC mechanisms become very important, and any one number is always wrong. A microkernel offers you the flexibility to choose this though. On linux, I write all my programs to run as processes. If I find I'm getting performance bound by system-call overhead, I can convert part of the program to a kernel module, to eliminate that. Microkernels extend this concept into the OS. If you find a bottleneck that is truely bogging you down, you can fix it. After working with microkernels for a while, the monolith way feels like the equivalent of starting every application as a kernel module rather than an independent process. Lastly I think a microkernel where a single module crash can hang the entire system is still superior to a monolithic kernel. The worst bugs aren't crashes, they are the ones where a bit of memory got corrupted and odd things just start happening. The more address spaces you have, the more localized the behavior of such bugs will be. |
|