Single address space operating system?
Posted: Fri Sep 03, 2021 4:51 pm
Hello,
I've lurked on this forum for quite some time but today I've decided to post my first question(s). First: does anyone here have a design that does not utilize hardware memory protection but instead utilizes software/language based memory protection?
I've attached links to two research papers, a GitHub repo, and a powerpoint presentation that go into deeper detail of this concept. For further reading, I've also included a link to the GitHub repo for the WASM linux kernel project.
Nebulet's design appears to be the most practical of the three as it uses the WASM VM/Sandbox as opposed to the .NET CLR or the Java VM, which are of course limited in their usages outside of Microsoft's managed languages/Java. From my understanding web assembly can be outputted from almost any language so long as a backend is written for the libraries used by the host language.
It appears that by foregoing the context switching and memory protection entirely, you can implement a microkernel design that is potentially much faster than a monolithic one. The security is achieved by sandboxing each process inside of the VM. The main drawback of Singularity and JX appears to be the lack of compatibility with existing software. You can compile most anything to WASM (unreal engine was ported), while the same is not true for CLR and the JVM. You couldn't even port a unix shell to the JVM, it doesn't even support chdir().
Now to my other questions: Is there an inherent design flaw that I am missing? Something that would completely prevent this from being practical? Is it unreasonable to run in Ring 0 with only a VM between sensitive system data and malicious software? If it's safe for web hosts to instill this level of trusts in VM's, why not an OS?
I would also like to mention that I am by no means a software engineer or professional of any sort. I would say that this is too large of a project for one hobbyist to attempt but Nebulet was written as a GSOC project.
Thanks,
Mike
Link is to a research paper describing the design of Microsoft's Singularity project:
https://www.microsoft.com/en-us/researc ... 05-135.pdf
Link to the research paper describing the design of the JX Operating system:
https://citeseerx.ist.psu.edu/viewdoc/d ... 1&type=pdf
Link to the slideshow that gives a visual representation of the JX OS design:
https://www4.cs.fau.de/Projects/JX/publ ... slides.pdf
Link to the Nebulet GitHub repo:
https://github.com/nebulet/nebulet
Link to the Linux WASM GitHub repo:
https://github.com/wasmerio/kernel-wasm
I've lurked on this forum for quite some time but today I've decided to post my first question(s). First: does anyone here have a design that does not utilize hardware memory protection but instead utilizes software/language based memory protection?
I've attached links to two research papers, a GitHub repo, and a powerpoint presentation that go into deeper detail of this concept. For further reading, I've also included a link to the GitHub repo for the WASM linux kernel project.
Nebulet's design appears to be the most practical of the three as it uses the WASM VM/Sandbox as opposed to the .NET CLR or the Java VM, which are of course limited in their usages outside of Microsoft's managed languages/Java. From my understanding web assembly can be outputted from almost any language so long as a backend is written for the libraries used by the host language.
It appears that by foregoing the context switching and memory protection entirely, you can implement a microkernel design that is potentially much faster than a monolithic one. The security is achieved by sandboxing each process inside of the VM. The main drawback of Singularity and JX appears to be the lack of compatibility with existing software. You can compile most anything to WASM (unreal engine was ported), while the same is not true for CLR and the JVM. You couldn't even port a unix shell to the JVM, it doesn't even support chdir().
Now to my other questions: Is there an inherent design flaw that I am missing? Something that would completely prevent this from being practical? Is it unreasonable to run in Ring 0 with only a VM between sensitive system data and malicious software? If it's safe for web hosts to instill this level of trusts in VM's, why not an OS?
I would also like to mention that I am by no means a software engineer or professional of any sort. I would say that this is too large of a project for one hobbyist to attempt but Nebulet was written as a GSOC project.
Thanks,
Mike
Link is to a research paper describing the design of Microsoft's Singularity project:
https://www.microsoft.com/en-us/researc ... 05-135.pdf
Link to the research paper describing the design of the JX Operating system:
https://citeseerx.ist.psu.edu/viewdoc/d ... 1&type=pdf
Link to the slideshow that gives a visual representation of the JX OS design:
https://www4.cs.fau.de/Projects/JX/publ ... slides.pdf
Link to the Nebulet GitHub repo:
https://github.com/nebulet/nebulet
Link to the Linux WASM GitHub repo:
https://github.com/wasmerio/kernel-wasm