Singularity (Microsoft)
# Singularity (Microsoft)

Singularity es un producto de Microsoft Research comenzado en 2003 para desarrollar un sistema operativo en el que el núcleo, dispositivos y aplicaciones estén escritos todos con código gestionado (managed code).

El nivel más bajo de interrupciones está escrito en lenguaje ensamblador y C. Por encima, el núcleo, cuyo entorno de ejecución y recolector de basura están escritos en C#, se ejecuta en modo no seguro.

La capa de abstracción del hardware está escrita en C++ y se ejecuta en modo seguro.

También hay algo de código C para manejar la depuración. La BIOS del ordenador solo se invoca durante la fase de arranque de 16 bits. Una vez se está en modo 32 bits, Singularity nunca vuelve a llamar a la BIOS, aunque sí llama a los controladores de los dispositivos escritos en Sing#, una extensión de Spec#, que a su vez es una extensión de C#. Durante la instalación, los códigos de operación CIL (Common Intermediate Language o Lenguaje intermedio común) se compilan a códigos de operación x86 usando el compilador Bartok.

Singularity 1.0 fue completado en el año 2007. Un paquete de desarrollo e investigación (RDK) para Singularity ha sido publicado con una licencia de fuente compartida que permite el uso no comercial y académico y está disponible en CodePlex. La investigación actual se mueve hacia el desarrollo de Singularity RDK 2.0

## Diseño

Singularity es un sistema operativo con micronúcleo; de todos modos, al contrario que muchos microkernel anteriores, sus componentes no se ejecutan en distintos procesos de espacios de memoria. De hecho, solo hay un único espacio de memoria en el que los procesos de programa aislados (SIP, Software-Isolated Processes) residen. Cada SIP tiene su propio espacio de código y datos y es independiente de otros SIP. Éstos se comportan como procesos normales, pero no requieren penalizaciones por cambio de tarea.

