Preferences

What are the latest cool ideas in OS design, both from a user's viewpoint and from an OS hacker's viewpoint?

It's "quietly public" but I've been working on a novel kernel design, this (12th, and final) rewrite undergoing development for about a year now.

https://github.com/oro-os/kernel

It's a user-less, capability-less microkernel design that enforces access control via the kernel's entity hierarchy. Shared memory ports with various levels of safety are the primary form of IPC, typed at the kernel level.

Currently undergoing later stages of the kernel efficacy stage; if I can prove the design I'll do a more formal writeup. It's been a project in my head for about 8 years and in the editor for about 4 now.

In OSes like these, I always enjoy reading about how the bootloader is kickstarted and how the OS is loaded. I don't know why :)
I find that part interesting too. There are a lot of chicken-and-egg situations you have to solve with them. Interesting breed of challenge.
Plan 9's cool ideas largely still haven't been surpassed or reimplemented.

https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf

It's surprisingly hard to use 9P and get good performance because the design sort of inherently forbids caching for "real" file data. Trying to add that on top pretty much sacrifices the simplicity and starts looking a lot more like NFSv4.
Fuchsia has a crap load of wild ideas. Microkernel, capabilities, weird app installation system (I think they're trying to make apps more like websites).

https://rtic.rs/ is a pretty cool idea for an embedded RTOS (sort of).

Honestly though there's still stuff in Plan 9 that is way more advanced than what Linux does, e.g. https://9p.io/sys/doc/lexnames.html

Genode [1] has an interesting approach to OS design as it is a framework, but how much is assembly I don't know.

[1] https://genode.org

The best answer, given the specific opposite edges you have broadly specified, is

  https://redox-os.org/
> Most system components run in user-space on a microkernel system. Because of this, bugs in most system components won’t crash the system/kernel.

It's funny because I want this when I write applications. Each library should run in its own sandbox, and by default they shouldn't be able to touch each other's data.

This is something the CHERI architecture[0] (an extension to ARM and RISC-V that implements a capability memory model) can allow this performantly with compiled code (without needing to context switch). This PhD dissertation from Cambridge[1] implements this for C/C++ under CheriBSD (their fork of FreeBSD that supports CHERI).

[0]: https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/

[1]: https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-949.pdf

illumos on RISC-V with CHERI would be the ultimate. There is another variant of RISC-V that is spectre immune. I have also recently heard of approaches at compile-time, such as RESPECTRE, that remove the spectre problem.
Something stupid I always wanted to do was to make an object-oriented language where literally every single object was a separate UNIX process. The naive implementation would have horrendous context switching overhead from the IPC, but maybe there's a clever and elegant way to use shared memory...
The original idea of Smalltalk was very much that :) Sadly, hardware limitations of the time did not allow Smalltalk to be implemented this way. Erlang was likely the first generally available implementation if the idea. (Now you write in Elixir for the same VM.)
It seems like the reduced overhead of cooperative multitasking (vs OS threads or even greenthreads) is so important that people are writing code entirely differently because of it. Like all those promise/future frameworks in Java etc, or NodeJS which works this way natively.
Practically Erlang

  https://learning-0mq-with-pyzmq.readthedocs.io/en/latest/pyzmq/patterns/pair.html
You're describing Elixir/Erlang?
Sorta, but while Erlang/Elixir isolates actors in normal APIs, a erlang process can access most anything using “system calls”. Same for RPCs to other nodes. You can do almost anything a local process can for better or worse.
Some of us are "spoiled" by Rust. About ten years ago the Erlang argument may have been somewhat compelling. Now we use software libraries that don't crash in the first place. Not every Rust library meets that metric, but using Rust as a baseline and a small handful of other patterns/practices it's not hard to meet these days.
Redox is Unix-like. It's not going to contain any significantly new ideas.
Yeah, you're right, Redox using a micro-kernel architecture taking inspiration from Plan9 and seL4 is not new ideas. What Redox is doing differently than the others that is new is successfully delivering these ideas.

Redox has delivered these existing ideas in a manner that will soon enough be (if not already) suitable for production use and available to package for casual non-hacker users. If there is another project that has also done this in a non-academic way, I'd like to see it.

This item has no comments currently.

Keyboard Shortcuts

Story Lists

j
Next story
k
Previous story
Shift+j
Last story
Shift+k
First story
o Enter
Go to story URL
c
Go to comments
u
Go to author

Navigation

Shift+t
Go to top stories
Shift+n
Go to new stories
Shift+b
Go to best stories
Shift+a
Go to Ask HN
Shift+s
Go to Show HN

Miscellaneous

?
Show this modal