4 ms·
The NT kernel and XNU (macOS) are considered hybrid kernels. QNX, a microkernel, is absolutely everywhere (i.e., cars). Performance of microkernels is or was a
by nullindividual 2y ago
The NT kernel and XNU (macOS) are considered hybrid kernels. QNX, a microkernel, is absolutely everywhere (i.e., cars).
Performance of microkernels is or was a hotly debated topic back in the '90s; microkernels generally had lower performance than their monolithic counterparts. There was a famous argument comparing Linux (monolithic) to MINIX (micro) [0]. Wikipedia has simple explanations for the differences between hybrid, mono, and micro kernels that serve as a decent primer [1] and a visual that I find helpful [2].
[0] https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_deb...
[1] https://en.wikipedia.org/wiki/Kernel_(operating_system) https://en.wikipedia.org/wiki/Kernel_(operating_system)
[2] https://en.wikipedia.org/wiki/Hybrid_kernel#/media/File:OS-structure2.svg https://en.wikipedia.org/wiki/Hybrid_kernel#/media/File:OS-s...
- wzdd 2y agoNot to mention Minix running on ~every recent Intel system: https://en.wikipedia.org/wiki/Intel_Management_Engine https://en.wikipedia.org/wiki/Intel_Management_Engine Microkernels still have lower performance than their monolithic counterparts. It makes sense really: the major difference between the two is protection barriers between components. All else being equal, a system without those barriers is faster than one with them unless crossing those barriers has zero cost -- which it only really does in the case of proof-carrying code and similar software solutions, where the "barrier" is more of a guarantee that the subsystem behaves as it should. A lot of microkernel research in the past focused on the "all else being equal" aspect, attempting to come up with innovative ways to reduce protection domain crossings in microkernels. For example, mapping graphics card memory or network device buffers directly into the address space of the client means that the hardware can deliver data directly to the client. However, monolithic kernels can also benefit from these sorts of innovations! As to why consumer OSes are all monoliths (yes, this includes Darwin and NT -- "hybrid" is a marketing term as all the important stuff runs in a single kernel address space; see https://en.wikipedia.org/wiki/Hybrid_kernel https://en.wikipedia.org/wiki/Hybrid_kernel): in consumer OSes, the 5% (or lower) performance hit of a microkernel is a big deal. In other spaces, such as embedded, the benefits of microkernels (reliability, security guarantees) are sometimes more important than raw performance.
- area51org 2y ago> Microkernels still have lower performance than their monolithic counterparts This is what I've understood, that the idea sounds good but in practice isn't as good as it seems like it would be.
- pclmulqdq 2y agoYou necessarily cross from userland (end program) to OS to userland (driver) for most tasks that monokernels just do with the first userspace->OS transition.
- Findecanor 2y agoThere have been architectures specifically designed to support some form of IPC or other directly between processes without going through the kernel, and thus without having more overhead. But those are a bit esoteric. The Mill is one, that has been in development for a while, but its company hasn't published much lately and its current status is a bit unclear. It would have had something very similar to Spring/Solaris "Doors" in hardware, where the caller could have passed temporary permissions to memory ranges. A "kernel" would have been a process like any other, just with more permissions.
- deleted 2y ago[deleted]
- microtonal 2y agoNot to mention Minix running on ~every recent Intel system And L4 on every Apple device with a secure enclave: https://support.apple.com/nl-nl/guide/security/sec59b0b31ff/web#:~:text=The%20Secure%20Enclave%20Processor%20runs,against%20clock%20and%20power%20attacks https://support.apple.com/nl-nl/guide/security/sec59b0b31ff/....
- AnimalMuppet 2y ago>Not to mention Minix running on ~every recent Intel system: https://en.wikipedia.org/wiki/Intel_Management_Engine https://en.wikipedia.org/wiki/Intel_Management_Engine But not as the actual system OS. Minix is doing a very little, running on a little side processor that also does very little. It's not running on the main CPU, nor having to interact with the insane number of possible peripherals that real CPUs and OSes have to interact with, nor with real system loads, nor with many of the other constraints that real OSes have to deal with. Yes, it's there. Yes, it's there in really massive numbers. But, compared to what the OSes are doing on the main CPU, Minix is doing a toy job. So I'm not sure that it counts as evidence for much of anything.
- asdfman123 2y agoThe Tanenbaum-Torvalds debate Wikipedia page seems to be missing a sidebar listing the combatants, strength of each side, causalities, etc.
- PartiallyTyped 2y ago> # Intel Management Engine revelations > In 2017, it was revealed that Intel was running MINIX inside the Management Engine, a separate processor incorporated in Intel processor chipsets since 2008. As a response to this, Tanenbaum wrote an open letter to Intel claiming MINIX to be "the most widely used computer operating system in the world".[17] Hilarious. I only wish I had a bucket of popcorn before I began reading this. https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_debate https://en.wikipedia.org/wiki/Tanenbaum%E2%80%93Torvalds_deb...
- deleted 2y ago[deleted]
- ape4 2y agoQNX is everywhere - including space http://www.qnx.com/news/pr_1446_4.html?lang=en http://www.qnx.com/news/pr_1446_4.html?lang=en
- RobotToaster 2y agoFreeRTOS too
- Findecanor 2y agoThere have been attempts at using QNX for a mainstream OS though, neither that gained major success but not because of lack of technical merit. In the mid 1980's, the ICON microcomputer system, perhaps known mostly for being used in Canadian schools. In the early '00s, QNX got jealous of Linux's success and started opening it up to try to attract app developers from the open source community.. but closed down the program before it could gain traction. In the early '10s, it was bought by Blackberry and used for the OS of a new wave of Blackberry smartphones and a tablet.
- adamomada 2y agoBlackBerry 10 devices were even capable of running Android (kitkat?) apps, which is an amazing feat by QNX. I wonder how they did it
- kazinator 2y agoQNX is promoted as a microkernel, but I'm skeptical. Microkernel doesn't just mean that we have modules that have their own threads. It refers to actually moving kernel functionality outside of the protected kernel space: device drivers, file systems, protocol stacks and such are in userland.