3 ms·
I'm afraid I don't fully understand the question; would you care to try rephrasing? Anyway, as to what I seem to understand: - "capabilities": ok, I think I ge
by akavel 9y ago
I'm afraid I don't fully understand the question; would you care to try rephrasing? Anyway, as to what I seem to understand:
- "capabilities": ok, I think I get the misunderstanding. The "capabilities" here are completely unrelated to "hardware capabilities" or "machine capabilities", a.k.a "what features does my phone have". The word has a totally different meaning in the technical jargon of OS development. It's a security architecture concept; as a first approximation, I'd say "capabilities" are somewhat akin to "permissions" on Android/iOS. You could maybe call them "permission lease": as an app, if you got some permission ("capability token"), you can choose to sublease/share/extend it to another app you run. See: https://en.wikipedia.org/wiki/Capability-based_security https://en.wikipedia.org/wiki/Capability-based_security
- microkernels are a general architecture approach; they can perfectly well be used for regular server/desktop OS. It's just that writing a new OS for an embedded system is easier as a "first step", because you can start smaller. A full-blown "general purpose" server/desktop OS is much more complex; enough to say that it must have very wide driver support for shitloads of different hardware existing in the world. (But there are also other challenges, like multiple user management.) Microkernels were long believed to have worse performance than monolithic kernels in popular perception, thus their historical unpopularity. However, this notion was challenged by the L4 kernel (https://en.wikipedia.org/wiki/L4_kernel https://en.wikipedia.org/wiki/L4_kernel), which was I believe the reason for the revived interest. L4 was apparently published ~1993, and there was QNX long before that; I'm not actually sure why it hasn't become more popular earlier. Maybe unfamliarity to programmers? I believe microkernels enforce somewhat stricter development standards than monolithic kernels (where it's probably easier to "just hack around" and duct-tape a new feature), thus probably raising the perceived development costs somewhat (I believe it's similar as if we compared e.g. Rust vs. C/C++).
edit: ah, a good example could be the L4-based L4Linux (https://en.wikipedia.org/wiki/L4Linux https://en.wikipedia.org/wiki/L4Linux) kernel, which is said to be a more or less "drop-in" replacement for the "classical" monolithic Linux kernel, so you should be able to run any Linux distro on it. Though I personally never tried it (yet).
The GenodeOS folks are also working towards building a usable "general purpose" desktop OS based on a microkernel, see e.g. chronologically:
- https://github.com/genodelabs/genode/issues/1552 https://github.com/genodelabs/genode/issues/1552
- https://github.com/genodelabs/genode/issues/2018 https://github.com/genodelabs/genode/issues/2018
- https://genode.org/documentation/articles/sculpt-ea https://genode.org/documentation/articles/sculpt-ea
- cm2187 9y agoThanks. You answered my question which was really if this would be an appropriate kernel for a fully blown OS.
- euyyn 9y agoA capability in this sense would be analogous to a bearer token in OAuth2, correct?
- akavel 9y agoSorry, can't say, I can never wrap my head around OAuth :( I'm not a security guy, just interested in some stuff, by the way.