Okay, well, that didn’t last long… But I found this article and figured I’d share it with you guys:
I think it’s a load of crap, and here’s why:
- Having multiple address spaces for drivers doesn’t make them more secure. They are still installed as modules, and modules can be exploited quite easily.
- Linux is technically modular–just not as modular as a traditional microkernel. If it wasn’t, you wouldn’t be able to install proprietary drivers. All you have to do is change the “y” in the defconfig to an “m” and it will that specific driver as a module and assign it its own address space. It’s done on Android all the time.
- They mention that C is essentially a dying language. That’s a bunch of bull. Languages are good forever. Only standards change. They mention kernels getting written in C# and C++ which kind of makes me laugh as neither will deliver the same performance on modern hardware as C.
- The structure allows for an increased amount of peer review. You want to submit an open source driver, you go through the review process. A lot of microkernels don’t undergo this.
I’m not by any means saying it’s perfect. Obviously it isn’t. But I’m so sick of this monolithic vs microkernel debate. People often bring up the crappiest reasons for choosing one over the other, and I just wanted to clarify some points that people often overlook.