4 ms·
For the love of god, can we please move to microkernel-based operating systems already? We're adding a million lines of code to the linux kernel every year. Tha
by darksaints 1y ago
For the love of god, can we please move to microkernel-based operating systems already? We're adding a million lines of code to the linux kernel every year. That's so much attack surface area. We're setting ourselves up for a kessler syndrome of sorts with every system that we add to the kernel.
- mdavid626 1y agoMost of that code is not loaded into the kernel, only when needed.
- darksaints 1y agoTrue, but the last time I checked (several years ago), the size of the portion of code that is not drivers or kernel modules was still 7 million lines of code, and the average system still has to load a few million more via kernel modules and drivers. That is still a phenomenally large attack surface. The SeL4 kernel is 10k lines of code. OKL4 is 13k. QNX is ~30k.
- deleted 1y ago[deleted]
- arp242 1y agoCan I run Firefox or PostgreSQL with reasonable performance on SeL4, OKL4, or QNX?
- doubled112 1y agoReasonable performance includes GPU acceleration for both rendering and decoding media, right?
- 0x457 1y agoyes
- arp242 1y agoNot necessarily; short-comings or "TODO"s are okay. I just want to know if I can run actual real-world complex applications on these micro-kernels, and what the trade-offs are (if any). Firefox on OpenBSD has fairly reasonable performance, but is quite a lot slower than on Linux. It's a perfectly reasonable trade-off, but you do need to be aware of it. I've asked this question a few times over the last few years when people bring up "we must use microkernel now! They already exist!"-type posts, and thus far the response has either been crickets or vague hand-waving with microbenchmarks that bear no relation to real-world programs.
- yencabulator 1y agoSeL4 was not built for multiple CPU cores, it's not going to perform with modern day "high end" hardware and last I looked its formal proofs don't apply to multicore systems.
- regularfry 1y agoYou've still got combinatorial complexity problem though, because you never know what a specific user is going to load.
- beeflet 1y agoOften you do know what a specific user is going to load
- wosined 1y agoI might be wrong, but microkernel also need drivers, so the attack surface would be the same, or not?
- kaoD 1y agoYou're not wrong, but monolithic kernel drivers run at a privilege level that's even higher than root (ring 0) while microkernels run them at userspace so they're as dangerous as running a normal program.
- pessimizer 1y ago"Just think of the power of ring-0, muhahaha! Think of the speed and simplicity of ring-0-only and identity-mapping. It can change tasks in half a microsecond because it doesn't mess with page tables or privilege levels. Inter-process communication is effortless because every task can access every other task's memory. "It's fun having access to everything." — Terry A. Davis
- beeflet 1y ago> Inter-process communication is effortless because every task can access every other task's memory. I think this would get messy quick in an OS designed by more than one person
- 01HNNWZ0MV43FF 1y agoRedox is a microkernel written in Rust
- jiehong 1y agoNaive question: is the Mac OS or iOS a microkernel? They seem to support http3 in their network foundation librairies and I’m wondering if it’s userland only or more.
- darksaints 1y agoMacOS is a hybrid kernel, which has been becoming more microkernel-like over time, and they are aggressively pushing more and more things to userspace. I don't think it will ever be a full microkernel, but it is promising to see that happening there. Ironic (in the alannis morrisette sense) that Apple has strictly controlled hardware AND OS-level software...if there's anybody out there that can possibly get away with a monolithic kernel in a safe way, it would be them. But Linux...where you have to support practically infinite variations in hardware and the full bazaar of software, that's a dumpster fire waiting to happen.