Singularity (operating system)
Experimental operating system from Microsoft Research
From Wikipedia, the free encyclopedia
Singularity is an experimental operating system developed by Microsoft Research between July 9, 2003,[3] and February 7, 2015.[4] It was designed as a high dependability OS in which the kernel, device drivers, and application software were all written in managed code. Internal security uses type safety instead of hardware memory protection.
| Singularity Project | |
|---|---|
Singularity after boot-up | |
| Developer | Microsoft Research (Microsoft Corporation) |
| Written in | Assembly language, C, C++, C#, Sing# |
| OS family | Language-based systems |
| Working state | Discontinued |
| Source model | Source-available (through Shared Source Initiative) |
| Initial release | March 4, 2008[1] |
| Final release | 2.0 / November 14, 2008 |
| Available in | English |
| Supported platforms | x86, x86-64[2] |
| Kernel type | Microkernel language-based |
| Default user interface | Command-line interface |
| License | Microsoft Research License |
| Official website | research |
Operation
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, where the runtime system and garbage collector are written in Sing Sharp (Sing#) (an extended version of Spec Sharp (Spec#), itself an extension of C#) and runs in unprotected mode.[5]: 14 [6]: 4 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 basic input/output system (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.[6]: 11
Security design
Singularity is a microkernel operating system. Unlike most historic 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.[5]: 4,11,35
Protection in this system is provided by a set of rules called invariants that are verified by static program 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.)[citation needed]
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 given computer security policy.[citation needed]
Project status
The first Singularity Research Development Kit (RDK), RDK 1.1, was initially released on March 4, 2008,[1] being released under a shared source license allowing academic non-commercial use and available from CodePlex.[7] RDK 2.0 was later released on November 14, 2008.[2]
Similar projects
- Inferno, first created in 1995, based on Plan 9 from Bell Labs; programs are run in a virtual machine and written in Limbo instead of C# with CIL; open-source software.
- JNode, an OS similar in concept to Singularity, but using Java instead of C# with CIL.
- MOSA, a .NET Framework compiler and operating system using C#
- TempleOS, a ring-0 operating system with JIT compiler; open-source software.