Singularity (operating system)

For other uses of "Singularity", see Singularity (disambiguation).
Singularity Project

Singularity after boot-up.
Developer Microsoft Corporation
Written in Assembly language, C, C++, C#, Sing#
OS family Language-based operating systems
Working state Abandoned
Source model Shared source
Latest release 2.0 / November 14, 2008 (2008-11-14)
Platforms x86
Kernel type Microkernel Language based
Default user interface Command line interface
License Microsoft Research License
Official website research.microsoft.com/en-us/projects/singularity/

Singularity was an experimental operating system built by Microsoft Research between 2003 and 2010.[1] It was designed as a highly-dependable OS in which the kernel, device drivers, and applications were all written in managed code.

Workings

The lowest-level x86 interrupt dispatch code is written in assembly language and C. Once this code has done its job, it invokes the kernel, whose runtime and garbage collector are written in Sing# (an extended version of Spec#, itself an extension of C#) and runs in unprotected mode. The hardware abstraction layer is written in C++ and runs in protected mode. There is also some C code to handle debugging. The computer's BIOS is invoked during the 16-bit real mode bootstrap stage; once in 32-bit mode, Singularity never invokes the BIOS again, but invokes device drivers written in Sing#. During installation, Common Intermediate Language (CIL) opcodes are compiled into x86 opcodes using the Bartok compiler.

Security design

Singularity is a microkernel operating system. Unlike most historical microkernels, its components execute in the same address space (process), which contains "software-isolated processes" (SIPs). Each SIP has its own data and code layout, and is independent from other SIPs. These SIPs behave like normal processes, but avoid the cost of task-switches.

Protection in this system is provided by a set of rules called invariants that are verified by static analysis. For example, in the memory-invariant states there must be no cross-references (or memory pointers) between two SIPs; communication between SIPs occurs via higher-order communication channels managed by the operating system. Invariants are checked during installation of the application. (In Singularity, installation is managed by the operating system.)

Most of the invariants rely on the use of safer memory-managed languages, such as Sing#, which have a garbage collector, allow no arbitrary pointers, and allow code to be verified to meet a certain policy.

Project status

Singularity 1.0 was completed in 2007. A Singularity Research Development Kit (RDK) has been released under a Shared Source license that permits academic non-commercial use and is available from CodePlex.[2] Version 1.1 was released in March 2007 and version 2.0 was released on November 14, 2008.

Similar projects

See also

References

  1. Source code history on CodePlex
  2. "Singularity RDK - Home". Retrieved 2016-06-08.
This article is issued from Wikipedia - version of the 11/18/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.