Memory safety for OS code:
Singularity, SPIN, JX, JavaOS, SafeDrive, and SVA-M are examples of system that enforce a safe execution environment.
Unfortunately, all these memory safety techniques (except Verve, which has very limited I/O and no MMU support) make assumptions that are routinely violated by low-level initeractions between an OS kernel and hardware, even if implemented in safe programming language. Such assumptions include:
A buggy kernel operation might overwrite program state while it is off-processor, and that state might later be swapped in between the definition and the use of the pointer value;
A buggy MMU mapping might remap the underlying physical memory to a different virtual page holding data of a different type;
A buggy I/O operation might bring corrupt pointer values into memory.
Reference 1
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?