2 ms·
IMO in hindsight we can say Linux was probably the technically superior choice. I can see the appeal of microkernels in theory, but in practice? Here's what I
by dale_glass 2y ago
IMO in hindsight we can say Linux was probably the technically superior choice.
I can see the appeal of microkernels in theory, but in practice? Here's what I gathered are the general problems:
* A microkernel won't stop some very bad things, like filesystem corruption. Some kinds of bugs are still a huge pain.
* Devices like hard disks and video cards have gotten smarter. They have lots of state, their own firmware, and can possibly DMA over system memory bypassing OS protections. This means that the effectiveness of splitting things into processes is likely limited when the video card can just take your entire system down anyway.
* The "system can tolerate a part of it crashing" is great, IF anyone bothers to take advantage of it, and IF things like hardware can be properly reinitialized. In practice your desktop probably doesn't account for that so your user session goes down. Might as well reboot.
* HURD specifically used to be limited to a 32 bit address space for filesystems which means it couldn't handle disks larger than 2GB (or some such size) for a long time.
* HURD processes can't trust each other. You can't have part A tell part B to drop their cache reliably to free up system memory. Every bit is separate from another, and can just ignore such a request.
* HURD specifically contained design decisions made to appeal to Stallman's pet peeves about sysadmin power. This is irrelevant today, but likely hampered adoption.
* Performance is bad.
* A monolithic kernel can always imitate a microkernel where convenient. The reverse doesn't hold true.
HURD introduced a bunch of difficulties and limitations. Linux could mostly ignore the costs of a microkernel and get things done well enough much faster. Where microkernels had some upside like usermode filesystems, Linux could just hack it in and only pay the price if you wanted that.
- f1shy 2y ago> Performance is bad Is there any Benchmark?
- dale_glass 2y agoHere: https://www.phoronix.com/review/debian-hurd-2015/2 https://www.phoronix.com/review/debian-hurd-2015/2 Some are not bad, but some are awful. It's going to depend. A microkernel means more context switches, so in general it should be guaranteed to lose. By a lot if you get into the really pathological cases.
- ThrowawayR2 2y ago> "This means that the effectiveness of splitting things into processes is likely limited when the video card can just take your entire system down anyway." Windows moved to user mode display drivers (https://en.wikipedia.org/wiki/User-Mode_Driver_Framework https://en.wikipedia.org/wiki/User-Mode_Driver_Framework) at least in part Microsoft was getting blamed for many blue screens caused by the extremely crappy video drivers of that era. Seems to have worked out for them.