Singularity (operating system)

From Wikipedia, the free encyclopedia

Singularity

Singularity after boot-up.
Website Microsoft Research Singularity Project
Company/
developer
Microsoft Corporation
Programmed in Assembly language, C, C++, C#, Sing#
OS family Language-based operating systems
Source model Shared source
Latest stable release 1.1 / March 4, 2008
Marketing target N/A
Available programming languages(s) ProtoLisp, C#, Sing#
Update method N/A
Package manager N/A
Supported platforms x86
Kernel type Microkernel Language based
Default user interface Command line interface
License Microsoft Research License
Working state Currently under development by Microsoft Research

Singularity is a Microsoft Research project started in 2003 to build a highly-dependable operating system in which the kernel, device drivers, 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 Sing#, an extended version of Spec#, itself an extension of C#. During installation, CIL opcodes are compiled into x86 opcodes using the Bartok compiler.

Singularity 1.0 was completed in 2007. A Singularity 1.1 Research Development Kit (RDK) has been released under a Shared Source license that permits academic non-commercial use and is available from CodePlex. Currently research is moving to the development of Singularity RDK 2.0.[1]

Contents

[edit] 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 that are verified by static analysis, such as the memory-invariant which states there will be no cross-references (or memory pointers) between two SIPs. Communication between SIPs occurs 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.

[edit] See also

  • SharpOS, an open source effort to write a operating system using C#
  • 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
  • Language-based system, General kernel design using language based protection instead of hardware protection
  • JX (operating system), a Java OS that, like Singularity, uses typesafety instead of hardware memory protection.
  • JNode, Similar concept, but with Java instead of CIL/C#.
  • JavaOS, Legacy OS based on the same concept as Singularity.

[edit] References

[edit] External links