6 ms·
Yes. As far as kernels go, NT was pretty damn good. So is Mach, by the way, if you can afford the microkernel performance overhead.
by DowsingSpoon 8mo ago
Yes. As far as kernels go, NT was pretty damn good.
So is Mach, by the way, if you can afford the microkernel performance overhead.
- dundarious 8mo agoIf you include all the drivers too (which surely makes the comparison more accurate), is that still the case?
- nobodyandproud 8mo agoWindows NT 3.x was a true microkernel. Microsoft ruined it but the design was quite good and the driver question was irrelevant, until they sidestepped HAL. The Linux kernel was and is a monstrosity.
- WalterGR 8mo agoWhat do you meant by them sidestepping the HAL?
- avadodin 8mo agoI think the biggest one is that the whole GDI library was moved into the Kernel in 3.5x because the performance was terrible at the time. I don't think they ever intended to keep all drivers strictly userland, though. Just the service side.
- nobodyandproud 8mo agoMind you I don't have access to Microsoft code, so this is all indirect, and a lot of this knowledge was when I was fledgling developer. The Windows NT code was engineered to be portable across many different architectures--not just X86--so it has a hardware abstraction layer. The kernel only ever communicated to the device-driver implementation through this abstraction layer; so the kernel code itself was isolated. That doesn't mean the device drivers were running in user-land privilege, but it does mean that the kernel code is quite stable and easy to reason about. When Microsoft decided to compromise on this design, I remember senior engineers--when I first started my career--being abuzz about it for Windows NT 4.0 (or apparently earlier?).
- pjmlp 8mo agoThis is outdated since Windows Vista, and even more so in Windows 11.
- nobodyandproud 8mo agoWindows Vista isn't Windows NT 3.x. In the internal versioning, it's not even 4.0.
- pjmlp 8mo agoIndeed, it is something better, Windows NT 6.0. And it is irrelevant anyway, given that this comment was written from 10.0.26100.
- nobodyandproud 8mo agoOh, I see. You’re saying they improved the design. I know they added user-privilege device driver support for USB (etc).; did they revert the display compromise/mess as well?
- pjmlp 8mo agoYes, now graphics drivers are mostly in userspace, with only a tiny driver in kernel space, miniport. Hence why graphics usually no longer crash Windows, after a small black screen pause, everything continues as usual. https://learn.microsoft.com/en-us/windows-hardware/drivers/display/windows-vista-display-driver-model-design-guide https://learn.microsoft.com/en-us/windows-hardware/drivers/d...
- deleted 8mo ago[deleted]
- johncolanduoni 8mo agoMach is not a very good microkernel at all, because the overhead is much higher than necessary. The L4 family’s IPC design is substantially more efficient, and that’s why they’re used in actual systems. Fuchsia/Zircon have improved on the model further. Someone will of course bring up XNU, but the microkernel aspect of it died when they smashed the FreeBSD kernel into the codebase. DriverKit has brought some userspace drivers back, but they use shared memory for all the heavy lifting.
- saagarjha 8mo ago> Mach is not a very good microkernel at all, because the overhead is much higher than necessary. The L4 family’s IPC design is substantially more efficient, and that’s why they’re used in actual systems. As opposed to Mach, which is not used in any actual systems
- johncolanduoni 8mo agoI mentioned XNU below. It doesn’t really count as a microkernel if you, you know, don’t actually use the microkernel part. At least for the 30 years between the FreeBSD collision and the introduction of DriverKit, which does most of its IPC through shared memory (because the mach ports are not efficient enough, I would assume).
- saagarjha 8mo agoYes, but a lot of other things use Mach messages.
- johncolanduoni 8mo agoAll the major OSes have components of the larger operating system that run in userspace and communicate via IPC, including Linux. But userspace drivers and basic system services (VFS, network stack, etc.) are very limited in their use of userspace/IPC. If macOS is a microkernel in the sense of those built on L4, then so are Windows and Linux, and the word doesn't have any meaning anymore.
- heavyset_go 8mo agoXNU monolith-ized itself over time, even over some microkernel-esque boundaries.