This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Singularity" operating system – news ·newspapers ·books ·scholar ·JSTOR(August 2011) (Learn how and when to remove this message) |
| 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 (throughShared Source Initiative) |
| Initial release | March 4, 2008; 17 years ago (2008-03-04)[1] |
| Final release | 2.0 / November 14, 2008; 17 years ago (2008-11-14) |
| Available in | English |
| Supported platforms | x86,x86-64[2] |
| Kernel type | Microkernellanguage-based |
| Default user interface | Command-line interface |
| License | Microsoft Research License |
| Official website | research |
Singularity is an experimentaloperating system developed byMicrosoft Research between July 9, 2003,[3] and February 7, 2015.[4] It was designed as a highdependability OS in which thekernel,device drivers, andapplication software were all written inmanaged code. Internal security usestype safety instead ofhardwarememory protection.
The lowest-levelx86interrupt dispatch code is written inassembly language andC. Once this code has done its job, it invokes the kernel, where theruntime system andgarbage collector are written in Sing Sharp (Sing#) (an extended version of Spec Sharp (Spec#), itself an extension ofC#) and runs in unprotected mode.[5]: 14 [6]: 4 Thehardware abstraction layer is written inC++ 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-bitreal mode bootstrap stage; once in32-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 theBartok compiler.[6]: 11
Singularity is amicrokernel operating system. Unlike most historic microkernels, its components execute in the sameaddress space (process), which containssoftware-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 calledinvariants that are verified bystatic 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 safermemory-managed languages, such as Sing#, which have agarbage collector, allow no arbitrary pointers, and allow code to be verified to meet a givencomputer security policy.[citation needed]
The first Singularity Research Development Kit (RDK), RDK 1.1, was initially released on March 4, 2008,[1] being released under ashared source license allowing academic non-commercial use and available fromCodePlex.[7] RDK 2.0 was later released on November 14, 2008.[2]