'Singularity' is a
Microsoft Research project started in 2003 to build a highly-
dependable operating system in which the
kernel,
device driver, and applications are all written in
managed code.
The lowest-level
x86 interrupt dispatch code is written in
assembly language and
C. Once this code has done its job, it calls the kernel, whose
runtime and
garbage collector are written in
C# and run in
unsafe mode. The
hardware abstraction layer is written in
C++ and runs in
safe mode. There is also some C code to handle debugging. The computer's
BIOS is only called during the 16-bit real-mode bootstrap stage; once in 32-bit mode, Singularity never calls the BIOS again, but rather calls device drivers written in C#. During installation,
CIL opcodes of the C# kernel are compiled into x86 opcodes using the
Bartok research project. Bartok is an optimizing
compiler written in C# for translating
CIL into
x86.
There has been no mention of releasing the
source code or
binaries.
Design
Singularity is a
microkernel operating system; however, unlike most historical microkernels, the different components do not run in separate
address spaces (
processes). Instead, there is only a single address space in which "Software-Isolated Processes" (SIP) reside. Each SIP has its own data and code layout, and is independent from other SIPs. These SIPs behave like normal processes, but do not require the overhead penalty of task-switches. Protection in this system is provided by a set of
invariants, such as the memory-invariant which states there will be no cross-references (or memory pointers) between two SIPs. Communication between SIPs occur via higher order communication channels managed by the operating system. These rules are checked during the installation phase of the application, and must be fulfilled in order for Singularity to allow the installation (note: in Singularity, installation is managed by the operating system).
Most of the invariants rely on the use of safer
memory-managed languages, such as
C#, where a
garbage collector is employed, there are no arbitrary pointers, and code can be verified to meet a certain
policy.
See also
★
Spec#, programming language, Eiffel-like design by contracts added to C#.
★
Sing#, programming language, channels and low level constructs added to Spec#, used for building singularity.
★
Inferno, an operating system from Bell Labs, some concepts of which Singularity uses.
External links
★
Official home page
★ [ftp://ftp.research.microsoft.com/pub/tr/TR-2004-105.pdf Singularity Design Motivation (pdf)]
★ [ftp://ftp.research.microsoft.com/pub/tr/TR-2005-135.pdf An Overview of the Singularity Project (pdf)]
★
Channel9 thread, with interview of Jim Larus and Galen Hunt
★
Channel9 debate started by the Niner Eagle
★
The JX Operating System (pdf), another operating system similar in concept
★
Singularity Revisited, an interview of the Channel 9 team to 4 researchers of the Singularity Project Team (video & thread)
★
Singularity III: Revenge of the SIP, an interview of the Channel 9 team to 3 researchers of the Singularity Project Team (video & thread).
★
Singularity IV: Return of the UI, a demo of Sigularity actually running (video & thread).