Microsoft announced their Singularity operating system this week. Call me a geek, but I can't help think of several Star Trek episodes where a quantum singularity played a role in the plotline. If I recall my Star Trek, a quantum singularity could distort time. In fact, a singularity lies at the center of a black hole, where matter is crushed to infinite density and the pull of gravity is infinitely strong. Hmm, maybe Microsoft shouldn't be drawing parallels to singularities where "matter is crushed" for fear of drawing the ire of the FTC or the EU which may see this as "codeword" for crushing the competition?
In any event, according to Microsoft, "Singularity is a research project focused on the construction of dependable systems through innovation in the areas of systems, languages, and tools. We are building a research operating system prototype (called Singularity), extending programming languages, and developing new techniques and tools for specifying and verifying program behavior."
So basically, they built from scratch a 300,000-line, microkernel-based operating system (OS) that has no buggy Windows in its core. What caught my eye was this:
SIP? Excuse me Microsoft, but the acronym SIP is taken, thank you very much! ;)
Advances in languages, compilers, and tools open the possibility of significantly improving software. For example, Singularity uses type-safe languages and an abstract instruction set to enable what we call Software Isolated Processes (SIPs). SIPs provide the strong isolation guarantees of OS processes (isolated object space, separate GCs, separate runtimes) without the overhead of hardware-enforced protection domains. In the current Singularity prototype SIPs are extremely cheap; they run in ring 0 in the kernel’s address space.
Singularity uses these advances to build more reliable systems and applications. For example, because SIPs are so cheap to create and enforce, Singularity runs each program, device driver, or system extension in its own SIP. SIPs are not allowed to share memory or modify their own code. As a result, we can make strong reliability guarantees about the code running in a SIP. We can verify much broader properties about a SIP at compile or install time than can be done for code running in traditional OS processes. Boarder application of static verification is critical to predicting system behavior and providing users with strong guarantees about reliability.