Este artículo necesita citas adicionales para su verificación . ( agosto de 2011 ) |
Revelador | Investigación de Microsoft ( Microsoft Corporation ) |
---|---|
Escrito en | Lenguaje ensamblador , C , C++ , C# , Sing# |
Familia de sistemas operativos | Sistemas basados en el lenguaje |
Estado de funcionamiento | Interrumpido |
Modelo fuente | Fuente disponible (a través de la Iniciativa de Fuente Compartida ) |
Lanzamiento inicial | 4 de marzo de 2008 ( 04-03-2008 ) | [1]
Versión final | 2.0 / 14 de noviembre de 2008 ( 14 de noviembre de 2008 ) |
Disponible en | Inglés |
Plataformas | x86 , x86-64 [2] |
Tipo de kernel | Basado en lenguaje microkernel |
Interfaz de usuario predeterminada | Interfaz de línea de comandos |
Licencia | Licencia de investigación de Microsoft |
Sitio web oficial | research.microsoft.com/en-us/projects/singularity |
Singularity es un sistema operativo experimental desarrollado por Microsoft Research entre el 9 de julio de 2003 [3] y el 7 de febrero de 2015. [4] Fue diseñado como un sistema operativo de alta confiabilidad en el que el núcleo , los controladores de dispositivos y el software de aplicación estaban escritos en código administrado . La seguridad interna utiliza seguridad de tipos en lugar de protección de memoria de hardware .
El código de despacho de interrupciones x86 de nivel más bajo está escrito en lenguaje ensamblador y C. Una vez que este código ha hecho su trabajo, invoca el núcleo, cuyo sistema de ejecución y recolector de basura están escritos en Sing# (una versión extendida de Spec#, en sí misma una extensión de C# ) y se ejecuta en modo desprotegido. [5] : 14 [6] : 4 La capa de abstracción de hardware está escrita en C++ y se ejecuta en modo protegido. También hay algo de código C para manejar la depuración. El sistema básico de entrada/salida ( BIOS ) de la computadora se invoca durante la etapa de arranque en modo real de 16 bits ; una vez en modo de 32 bits , Singularity nunca vuelve a invocar el BIOS, sino que invoca controladores de dispositivos escritos en Sing#. Durante la instalación, los códigos de operación de lenguaje intermedio común (CIL) se compilan en códigos de operación x86 utilizando el compilador Bartok . [6] : 11
Singularity es un sistema operativo de microkernel . A diferencia de la mayoría de los microkernels históricos, sus componentes se ejecutan en el mismo espacio de direcciones ( proceso ), que contiene procesos aislados por software (SIP). Cada SIP tiene su propio diseño de datos y código, y es independiente de otros SIP. Estos SIP se comportan como procesos normales, pero evitan el costo de los cambios de tareas. [5] : 4,11,35
La protección en este sistema se proporciona mediante un conjunto de reglas llamadas invariantes que se verifican mediante el análisis estático del programa . Por ejemplo, en los estados invariantes de memoria no debe haber referencias cruzadas (o punteros de memoria) entre dos SIP; la comunicación entre SIP se produce a través de canales de comunicación de orden superior gestionados por el sistema operativo. Las invariantes se comprueban durante la instalación de la aplicación. (En Singularity, la instalación la gestiona el sistema operativo).
La mayoría de los invariantes se basan en el uso de lenguajes administrados por memoria más seguros , como Sing#, que tienen un recolector de basura , no permiten punteros arbitrarios y permiten verificar el código para cumplir con una política de seguridad informática determinada .
El primer kit de desarrollo de investigación de Singularity (RDK), RDK 1.1, se lanzó inicialmente el 4 de marzo de 2008, [1] bajo una licencia de código compartido que permite el uso académico no comercial y está disponible en CodePlex . [7] RDK 2.0 se lanzó más tarde el 14 de noviembre de 2008. [2]