3 ms·
Cool! Very interesting development given how bad reputation microkernels had for a while. (I’m thinking of Linux vs Minix/Hurd.)
by cpach 5y ago
Cool! Very interesting development given how bad reputation microkernels had for a while. (I’m thinking of Linux vs Minix/Hurd.)
- kzrdude 5y agomacOS (Mac OS X lineage) was always based on mach (a microkernel) which made it a hybrid kernel: https://en.wikipedia.org/wiki/XNU https://en.wikipedia.org/wiki/XNU
- zibzab 5y agoFYI, Linux userspace drivers were introduced in 2006-2007 and improved multiple times over the years. Some of my filesystem & networking drivers run in usersapce. The monolithic vs microkernel debate was pretty clueless at times. Core Linux is smaller than dito hurd when configured with similar functionality. OSX mach has always been a hybrid kernel. In a sense Linux is too but you can also configure it as a mostly-monolithic thing, and most seem to prefer that.
- creshal 5y agoSome of the userspace drivers are even shared between OSX and Linux, via FUSE.
- roblabla 5y agoAnother example would be userspace network drivers that directly talk to the network card. Those tend to be much more performant than using the kernel driver due to avoiding the need to context switch from userspace to kernelspace.
- zibzab 5y agoIs that really true in pratice (excluding unikernels, of course)?
- MayeulC 5y agoAren't we making userspace/kernel space communication a lot more efficient with io-uring, though? Likewise, eBPF allows userspace programs to perform some work inside kernel space to reduce syscalls. I wonder if io-uring won't be a starting point for a "microkernelization" of Linux. It seems really effective as a message-passing interface.
- pjmlp 5y agoLook at Android' Project Treble, that is what Google has done, just with Android IPC instead of io-uring.
- pjmlp 5y agoSince Android 8, Linux is a kind of pseudo-microkernel, as all drivers are required to be Treble based, and traditional Linux drivers are considered legacy on the platform. https://source.android.com/devices/architecture/hal-types https://source.android.com/devices/architecture/hal-types The Switch (yes the games console) uses a microkernel. QNX an OS for human critical scenarios is a microkernel. Finally, when arguing Linux vs Minix/Hurd, think of the irony of running Linux on top of a cloud hypervisor, with an endless load of Kubernetes or Docker loads.
- SlowRobotAhead 5y ago> QNX an OS for human critical scenarios is a microkernel. Hmm, Never thought about a stated OS focus like that. Off to look it up. Good mention
- pjmlp 5y agoSearch for high integrity computing, that is the industry term.
- tzs 5y agoAt the time of the Linux vs. Minix debate, on pretty much every performance measure that Linus said monolithic kernels were better at the microkernel QNX was totally wiping the floor with Linux.