Live data from Hacker News

The Jury Is In: Monolithic OS Design Is Flawed [pdf]

ts.data61.csiro.au

171–180 of 199 posts

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#171
post #119

Earlier quoted context omitted.

I don't see why any of those are mutually exclusive. Capability based operating systems provide least privilege security, experiments with capability-based UIs have shown they are quite intuitive and secure because they align user actions with explicit access grants, and they don't perform any worse than monolithic or microkernel operating systems. The problems are really the flawed mental models people insist on bri…

Capability chains are relatively more expensive to check than a bitmask, or just nothing (as e.g. in an embedded system). Also, performance asks for shortest code paths and out-of-order execution, security asks for prevention of timing attacks and Spectre-like attacks. Security requires to identify yourself with hard-to-fake means, it takes time and effort (recollecting and typing a password, fumbling with a 2FA toke…

I'm not sure you and I are referring to the same thing by "capability". There is no chain of capabilities that needs to be checked, the reference you hold is necessary and sufficient for the operations it authorizes. In existing capability operating systems, this is a purely local operation, requiring only two memory load operations. Hardly expensive.

Every OS is vulnerable to the hardware upon which it runs, but capability security at least makes side channel attacks somewhat more difficult because of least privilege and limiting access to non-deterministic operations, like the clock.

Identity-based security built on an authorization-based model like capabilities also ensures it's difficult to make promises you can't keep. Access list models let you easily claim unenforceable properties and then people are surprised when they are easily violated.

> ease of use asks for maximum resources given to the interactive application, and scheduling based on lowest interactive latency.

That's unnecessary. You need a low latency upper bound, not a "lowest latency". This does not necessarily conflict with throughput, and furthermore, and install requiring high throughput and interactivity rarely overlap.

I'm not even sure what the rest of the properties are supposed to be about. I don't think most of those are mutually exclusive either.

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#172
post #167

OK so seL4 is safer than Linux, that's not really news.. I have questions about seL4 though: is it able to manage several multicore CPU efficiently? What about power management, does it work?

Given that it is responsible for powering many embedded systems deployed into production, yes.

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#173

Earlier quoted context omitted.

If we can't make reasonably secure controllers with only 4KB of RAM, perhaps we shouldn't be making controllers with only 4KB of RAM. Tech and market pressure will make more capable processors affordable if security is prioritised.

Bah, don't conflate 'microkernel' with 'secure'. For a small system like that, the shining ideal is probably a formally verified single program with no real OS to speak of.

I don't need to - the paper just did that by conflating monolithic kernels with security failures that were avoidable.

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#174

Earlier quoted context omitted.

> QnX has shown the strength of microkernels for decades Could you elaborate on this one please?

QnX is so common that if you removed it from the industrial world the world would literally grind to a halt. Machinery and vehicles would stop moving, factories would stop producing, chemical plants would (hopefully!) shut down and airplanes would no longer take off (or would have a much harder time trying to land without the usual guidance systems), boats would drift and messages would stop being sent through many s…

Just as a casual reader of this comment, a few tips:

- The rhetoric about the world grinding to a halt isn't really pertinent and makes you look unreliable. Also, no, not "literally." I think what you're getting at is that it's chosen for high-reliability systems, with the implication being that it's chosen for its superior reliability(?)

- But I say this because it sounds like you have some knowledge as to how this obscure microkernal is used and sharing that is valuable to the community. It's just a shame if the message gets lost in the delivery.

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#175
post #102

Earlier quoted context omitted.

https://utcc.utoronto.ca/~cks/space/blog/tech/HypervisorVsMi... > Microkernels are intended to create a minimal set of low-level operations that would be used to build an operating system. While it's popular to slap a monolithic kernel on top of your microkernel, this is not how microkernel based OSes are supposed to be; a real microkernel OS should have lots of separate pieces that used the microkernel services to w…

OKL4 was both a microkernel and hypervisor. They coined term microhypervisor to differentiate that. https://microkerneldude.wordpress.com/2008/04/03/microkernel... NOVA is an open-source micro-hypervisor available in GenodeOS that similarly combines hypervisor functionality with a microkernel-like design: http://hypervisor.org The Xen hypervisor also got many of its design elements from the Nemesis OS, which had a li…

The fact people disagreed by downvoting rather negates your points.

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#176
post #102
post #45

Earlier quoted context omitted.

The dirty secret is that we take a microkernel, rename the syscalls as "upcalls", throw in some hardware emulation code as a less efficient and uglier API for software that can't be bothered to be ported, and call it a hypervisor. Also, your phone's baseband processor almost certainly runs a microkernel, and likely so does your car.

https://utcc.utoronto.ca/~cks/space/blog/tech/HypervisorVsMi... > Microkernels are intended to create a minimal set of low-level operations that would be used to build an operating system. While it's popular to slap a monolithic kernel on top of your microkernel, this is not how microkernel based OSes are supposed to be; a real microkernel OS should have lots of separate pieces that used the microkernel services to w…

Your second paragraph is exactly what I meant by adding hardware emulation code to create a less efficient and uglier API.

The hardware-like interface to the hypervisor is both inefficient and not very abstract. For instance, a guest kernel attempts to perform a series of manipulations of the page table, each of which traps to the hypervisor, or else it performs an equivalent upcall to manipulate the page tables.

The hardware emulation code ads a lot of potential bugs to the hypervisor. I hope our current hypervisors are an evolutionary transitional form and in the future we'll interact with hypervisors solely through upcalls.

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#177
post #72
post #42

Earlier quoted context omitted.

Particularly if you're doing kernel bypass for performance reasons, the smaller cache footprint of a microkernel is an advantage. When I was in college, the first assignment was to run a provided benchmark program that jumped all over a gradually growing buffer and graphed average latency vs. buffer size and we had to identify the sizes of thle various caches from the generated graphs. I was tripple-booting Linux Win…

Cache footprint of the OS shouldn't matter because the system should be otherwise idle and benchmark shouldn't be interacting much with the OS. The OS mostly doesn't run during the benchmark. Assuming you didn't have those mistakes, the difference was likely due to memory allocator choices. Scattering the pages of memory is very different from laying them all out one after another. Scattered pages will cause benchmar…

The benchmarks weren't particularly well written, using lots of syscalls for timing instead of RDTSC. The impact was small compared to cache size, and the benchmark worked perfectly fine for education.

I noticed a later filesystem simulation benchmark for the same class ran faster when I moved my mouse. After a few minutes of investigation, I submitted a patch to prefer /dev/urandom to /dev/random on hosts that had /dev/random.

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#178

Earlier quoted context omitted.

Soon it will be: ... webassembly vm (insert variable height custom stack) application ... Sad times.

Oh I forgot about wasm. Maybe one day someone will just collapse the whole thing and embed the internet in silicon.

"This, Jen, is the internet."

https://youtu.be/iDbyYGrswtg

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#179

Earlier quoted context omitted.

Bah, don't conflate 'microkernel' with 'secure'. For a small system like that, the shining ideal is probably a formally verified single program with no real OS to speak of.

I don't need to - the paper just did that by conflating monolithic kernels with security failures that were avoidable.

That doesn't mean they are the only way to get security.

Re: The Jury Is In: Monolithic OS Design Is Flawed [pdf]

#180

Earlier quoted context omitted.

OK, that calls out X.org as the reason why the drivers aren't being supported rather than Linux. You can use fglrx with newer kernels just fine, it's just that user space went out of it's way to break support. I really fail to see how that has anything to do with Linux's unstable kernel driver API.

> OK, that calls out X.org as the reason why the drivers aren't being supported rather than Linux. Ah, the Linux evangelist blame-game. It's a big advantage of a system being so haphazardly thrown together from separately developed components. Start by blaming the choice of distro, end up at "Linux is just a kernel".

I mean, I feel like that's valid in the context of this discussion. That being 'Linux's unstable driver API designed to push drivers as source into mainline causes ISVs headaches'.

How does that apply here when Linux didn't change and you can still use the same kernel driver, but some other component decided to not work with the driver anymore?

Post reply on HN