“Operating system design has been somewhat stagnant since, well, ever. Sure, once in a while, you hear of a cool os that some company worked on ten years ago or an interesting prototype that has recently crawled it’s way out of a professor’s underground lab”
Hope you enjoy some of this stuff as you think about OS design. And welcome to Lobsters! :)
G’day Nick, Have you looked at redox at all? Also in a similar vein, but in Java and not developed any more I think, is jnode.
Both Redox and Muen separation kernel could be on the list. JNode was neat but I didnt evaluate its security. JX had neat architecture.
Jnode was trying to run legacy x86 software with my very own jpc.
If you like those, check out sanos. It’s an older one with a Windows focus few seem to know about.
I’m really happy to see someone try their hand at writing an operating system from scratch in Rust that attempts to do something novel in the space and is a little ambitious.
If you would like to experiment yourself, and don’t have much OS-writing experience, I found this quite helpful.
This is great and very interesting! We need more people working on stuff that really challanges the status quo. Keep it up!
This sounds awfully familiar.
I don’t understand how it’s possible pick three here: “full-native speed”, single address space OS (everything in ring 0) and security. I believe you can only pick two.
Well, that’s what nebulet is trying to challenge.
I haven’t yet read the whole paper but in the conclusion they say that performance was a non-goal. They “also improved message-passing performance by enabling zero-copy communication through pointer passing”. Although I don’t see why zero-copy IPC can’t be implemented in a more traditional OS design.
The only (performance-related) advantage such design has in my opinion is cheaper context-switching, but I’m not convinced it’s worth it. Time (and benchmarks) will show, I guess.
When communication across processes becomes cheaper than posting a message to a queue belonging to another thread in the same process in a more traditional design, I’d say that that’s quite a monstrous “only” benefit.
I should have drawn your attention to section 2.1 in the original comment, that’s where you original query is addressed. Basically the protection comes from static analysis, a bit like the original Native Client or Java’s bytecode verifier