Hacker News new | past | comments | ask | show | jobs | submit login

Hear, hear! I've always said microkernels are the best. If you have thousands of drivers in your kernel, each one is just another attack surface, something that can take the machine down on something as simple as RS232 traffic. Instead drivers should be isolated in their own process. It has lots of advantages:

* Dynamic loading of drivers is no longer an issue, the kernel already knows how to dynamically load processes anyway and a driver is just another proces. No need for special 'kernel maintainers' for drivers, or for drivers to be open source (in case of the Linux kernel).

* Much better system stability, since drivers can do no harm. Kernel architecture can be simpler too.

* Much simpler drivers. Instead of strict cooperation rules the kernel can just pre-empt them when needed.

Unfortunately it appears there is no credible effort in developing a mainstream microkernel OS at this time. Nonetheless, the few I've worked with in the past were amazing and I'd love to see this idea come back.




Context switching overhead is bad for microkernel performance. All the reasons why the userspace wireguard implementation was slower apply to each and every part of a microkernel system. And all of this got worse with spectre and meltdown, secure context switches are now even more expensive. Modern CPUs generally always increase the context switching cost, they optimize for single-process benchmarks.

So microkernels are dead, performance buries them deeper and deeper.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: