2002-07-20 08:58:46 PDT
Is the OS orthogonally persistent? (As EROS-os [www.eros-os.org])
Or should each piece of code and object know how to serialize itself to disk?
What is the safe language to be used? Where can I find its specifications?
Perhaps using a language variant of a safe language such as Python, or some Lisp variant can save you a lot of language design and free you up to work on the OS?
I've been planning to embark on a similar (almost identical, actually) OS myself, as soon as I had the time, and so I was considering implementing some safe bytecode that I can later compile many safe languages to.
Just to make sure I understand your idea is similar to mine, does all of the code execute in Privelege Level 0, or does the code still have to employ expensive RingLevel switches?
As for achieving performance (removing runtime checks), without losing safety, there's another related idea of logic-languages, that allow you to prove the safety of your code with logical primitives in the language, so that you have logical proof alongside the code, that the compiler can verify. This does not encounter the Halting Problem because the compiler isn't proving anything, just verifying _your_ proof of safety is correct. It is also fast, because at runtime, none of the tests have to run. Most of all, it is safe, because the code was logically proven correct.
P.S: IMO, you should probably mention the proof by author of EROS OS (Shapiro), of the property of confinement, because it also has a profound effect on the security of your system, as it seems to me to be such a capability system.