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 .
Operación
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
Diseño de seguridad
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 .
Estado del proyecto
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]
Proyectos similares
- Inferno , creado por primera vez en 1995, basado en Plan 9 de Bell Labs ; los programas se ejecutan en una máquina virtual y se escriben en Limbo en lugar de C# con CIL; software de código abierto
- JavaOS , un sistema operativo heredado basado en el mismo concepto que Singularity
- JNode, un sistema operativo similar en concepto a Singularity, pero con Java en lugar de C# con CIL
- JX , un sistema operativo Java que, como Singularity, utiliza seguridad de tipos en lugar de protección de memoria de hardware de computadora
- Phantom OS , un sistema operativo administrado
- SharpOS , un esfuerzo anterior por escribir un sistema operativo utilizando C#; software de código abierto
- MOSA, un compilador y sistema operativo de .NET Framework que utiliza C#
- Cosmos , un conjunto de herramientas de bloques de construcción para desarrollar un sistema operativo utilizando C#; software de código abierto
- TempleOS , un sistema operativo de anillo 0 con compilador JIT; software de código abierto
Véase también
- Sistema basado en lenguaje , diseño de núcleo general que utiliza protección basada en lenguaje en lugar de protección de hardware.
- Midori , un sistema operativo basado en microkernel desarrollado por Microsoft. Basado en Singularity y relacionado con él.
Referencias
- ^ ab "Singularity RDK 1.1". CodePlex . Archivado desde el original el 4 de mayo de 2009 . Consultado el 16 de enero de 2022 .
- ^ ab "Singularity RDK 2.0 Initial Release (17067)". CodePlex . 14 de noviembre de 2008. Archivado desde el original el 6 de diciembre de 2008 . Consultado el 16 de enero de 2022 .
- ^ "Singularidad". Microsoft . Consultado el 16 de enero de 2022 .
- ^ "Singularity RDK". CodePlex . Archivado desde el original el 2 de enero de 2018 . Consultado el 16 de enero de 2022 .
- ^ ab "Una descripción general del Proyecto Singularidad" (PDF) . Microsoft . Consultado el 16 de enero de 2022 .
- ^ ab Hunt, Galen; Larus, James. "Singularidad: replanteando la pila de software" (PDF) . Microsoft . Microsoft Research Redmond . Consultado el 16 de enero de 2022 .
- ^ Ricciuti, Mike (5 de marzo de 2008). "¿Es 'Singularity' de Microsoft el sistema operativo del futuro?". CNET . Consultado el 16 de enero de 2022 .
Enlaces externos
- Sitio web oficial
- Motivación y visión general del proyecto Singularity Design
- Código fuente de Singularity en CodePlex
- Singularity: Un sistema operativo de investigación escrito en C#: entrevista del equipo de Channel 9 a Jim Larus y Galen Hunt (video e hilo)
- Singularity III: La venganza del SIP, una entrevista del equipo de Canal 9 a 3 investigadores del equipo del Proyecto Singularity (video e hilo).
- Singularity IV: Return of the UI, una demostración de Singularity funcionando realmente (video e hilo).
- Singularity Revisited, entrevista del equipo de Channel 9 a 4 investigadores del equipo del Proyecto Singularity (vídeo e hilo)