|Microsoft Singularity; The Next Prototype In System Design|
Microsoft Singularity; The Next Prototype In System Design [research.microsoft.com]
|a new system-architecture and operating system built on advances in programming languages and tools. |
"Our goal was to make Singularity small enough, simple enough, and well-designed enough that you can try out radical new ideas quickly," Hunt says. "Our thinking is that a researcher with a great new idea for improving operating systems could get from idea to published paper in under a year using Singularity."
Singularity source code is available for academic and non-commercial use from the codeplex site.
[edited by: encyclo at 3:44 pm (utc) on Mar. 6, 2008]
[edit reason] spelling [/edit]
I actually read through all that, and although it had some interesting info, it was a bit over my head for the most part. ;)
From what I understand Singularity is an operating system (OS) whose kernel was written in C# to create somewhat of a managed OS.
Some interesting developer notes I found in the linked research at MS:
|Again, this is a prototype research OS, not a full fledged OS that can run the typical applications you've come to expect of an OS (or even provide a user interface beyond, say, that of DOS). |
|However, we do have around some assembly code. Like a kernel written in C, our C# kernel needs assembly code to handle the lowest part of the interrupt dispatch on the x86. But once the assembly code has finished, it dispatches directly into compiled C# (no C). BTW, there is some C code in the system, primarily for the debugger stub. |
|Didn't JavaOS do this? Not really. JavaOS is just a simple run-time system between the JVM and bare hardware, which provided a bare minimum of services on the hardware to run the JVM. Singularity is much closer to the JX project in many respects. You might want to take a look at their paper to understand some of what we are doing: Golm, M., Felser, M., Wawersich, C. and Kleinoeder, J. The JX Operating System. in Proceedings of the USENIX 2002 Annual Conference, Monterey, CA, 2002, 45-58. |
I remember awhile back when I came across an OS written entirely in Assembler. You have to be a real geek to be playing around in this sandbox. I'm with bill -- let others write this software, I prefer the application level myself.
|You have to be a real geek |
OK, those words are a little harsh.
You have to be a very intelligent and dedicated low-level language programmer to want to play in that sandbox.
That's better ;)
|Singularity pioneers the use of software-isolated processes (SIPs) to help protect programs and system services... |
In the past, creating many processes in an operating system was impractical from a cost perspective, largely because they required special support from the hardware.
This is outside my area of expertise, but sounds like complete twaddle. Hardware memory management is already used to protect one process from corrupting another - I think it started with the 386 over twenty years ago. For instance, you cannot meaningfully pass pointers (to data) from one process to another.
This seems to be confirmed by this...
|In the current Singularity prototype SIPs are extremely cheap; they run in ring 0 in the kernelís address space. |
Unless you want to run hundreds or thousands of tiny processes in parallel, this is pointless. Perhaps this would be a valid approach for an AI or real-time simulation but not for much else.
Having considered this further, there is an advantage...
Using this system, you could effectively edit and restart individual threads in a multi-threaded program without restarting the whole program. However, the CPU overheads associated with "range-checking" all shared-memory access would probably mean that this would be more useful for development of new ideas rather than end-use deployment.