Inferno es un sistema operativo distribuido iniciado en Bell Labs y ahora desarrollado y mantenido por Vita Nuova Holdings como software gratuito . [2] Inferno se basó en la experiencia obtenida con Plan 9 de Bell Labs y la investigación adicional de Bell Labs sobre sistemas operativos, lenguajes, compiladores sobre la marcha, gráficos, seguridad, redes y portabilidad. El nombre del sistema operativo y muchos de sus programas asociados, así como el de la empresa actual, se inspiraron en la Divina Comedia de Dante Alighieri . En italiano, Infernosignifica "infierno", de los cuales hay nueve círculos en la Divina Comedia de Dante .
Desarrollador | Bell Labs , Vita Nuova |
---|---|
Escrito en | C , [1] Limbo |
Estado de trabajo | Actual |
Modelo fuente | Fuente abierta |
Versión inicial | 1996 |
Último lanzamiento | 4ta Edición / 28 de marzo de 2015 |
Repositorio | |
Plataformas | BRAZO , PA-RISC , MIPS , PowerPC , SPARC , x86 |
Tipo de grano | Máquina virtual ( Dis ) |
Licencia | GPL , LGPL , MIT |
Precedido por | Plan 9 |
Página web oficial | www |
Criterios de diseño
Inferno fue creado en 1995 por miembros de la división de Investigación en Ciencias de la Computación de Bell Labs para llevar las ideas del Plan 9 de Bell Labs a una gama más amplia de dispositivos y redes. Inferno es un sistema operativo distribuido basado en tres principios básicos extraídos del Plan 9:
- Recursos como archivos: todos los recursos se representan como archivos dentro de un sistema de archivos jerárquico .
- Espacios de nombres: la vista de un programa de la red es un espacio de nombres único y coherente que aparece como un sistema de archivos jerárquico, pero que puede representar recursos separados físicamente (local o remotamente).
- Protocolo de comunicación estándar: se utiliza un protocolo estándar, llamado Styx , para acceder a todos los recursos, tanto locales como remotos.
Para manejar la diversidad de entornos de red en los que se pretendía utilizar, los diseñadores decidieron que una máquina virtual era un componente necesario del sistema. Esta es la misma conclusión del proyecto Oak que se convirtió en Java , pero a la que se llegó de forma independiente. La máquina virtual Dis es una máquina de registro destinada a coincidir estrechamente con la arquitectura en la que se ejecuta, a diferencia de la máquina de pila de la Máquina virtual Java . Una ventaja de este enfoque es la relativa simplicidad de crear un compilador justo a tiempo para nuevas arquitecturas.
La máquina virtual proporciona administración de memoria diseñada para ser eficiente en dispositivos con tan solo 1 MiB de memoria y sin hardware de mapeo de memoria. Su recolector de basura es un híbrido de recuento de referencias y un recolector de colores en tiempo real que recopila datos cíclicos. [3]
El kernel de Inferno contiene la máquina virtual, el compilador sobre la marcha, el programador, los dispositivos, las pilas de protocolos y el evaluador de espacios de nombres para el espacio de nombres de archivos de cada proceso y la raíz de la jerarquía del sistema de archivos. El kernel también incluye algunos módulos integrados que proporcionan interfaces del sistema operativo virtual, como llamadas al sistema, gráficos, seguridad y módulos matemáticos.
El artículo de Bell Labs Technical Journal que presenta a Inferno enumeró varias dimensiones de portabilidad y versatilidad proporcionadas por el sistema operativo: [4]
- Portabilidad entre procesadores: actualmente se ejecuta en arquitecturas ARM , SGI MIPS , HP PA-RISC , IBM PowerPC , Sun SPARC e Intel x86 y es fácilmente portátil para otros.
- Portabilidad entre entornos: se ejecuta como un sistema operativo independiente en terminales pequeños y también como una aplicación de usuario bajo Bell Plan 9 , MS Windows NT , Windows 95 y Unix ( SGI Irix , Sun Solaris , FreeBSD , Apple Mac OS X , Linux , IBM AIX , HP-UX , Digital Tru64 ). En todos estos entornos, los programas de Inferno ven una interfaz idéntica.
- Diseño distribuido: se establece un entorno idéntico en el terminal del usuario y en el servidor, y cada uno puede importar los recursos (por ejemplo, los dispositivos o redes de E / S conectados) del otro. Con la ayuda de las facilidades de comunicación del sistema en tiempo de ejecución, los programas se pueden dividir fácilmente (e incluso dinámicamente) entre cliente y servidor.
- Requisitos mínimos de hardware: ejecuta aplicaciones útiles de forma independiente en máquinas con tan solo 1 MiB de memoria y no requiere hardware de mapeo de memoria .
- Programas portátiles: los programas de Inferno están escritos en el lenguaje Limbo de tipo seguro y compilados en código de bytes Dis , que se puede ejecutar sin modificaciones en todas las plataformas de Inferno.
- Adaptabilidad dinámica: los programas pueden, dependiendo del hardware u otros recursos disponibles, cargar diferentes módulos de programa para realizar una función específica. Por ejemplo, un reproductor de video puede usar cualquiera de varios módulos decodificadores diferentes.
Estas opciones de diseño se dirigieron a proporcionar interfaces estándar que liberen a los proveedores de contenido y servicios de la preocupación por los detalles de diversos hardware, software y redes a través de las cuales se entrega su contenido.
Características
Los programas de Inferno son portátiles en una amplia combinación de hardware, redes y entornos. Define una máquina virtual , conocida como Dis , que se puede implementar en cualquier máquina real, proporciona Limbo , un lenguaje de tipo seguro que se compila en código de bytes portátil y, lo que es más significativo, incluye un sistema operativo virtual que proporciona lo mismo. interfaces ya sea que Inferno se ejecute de forma nativa en hardware o se ejecute como un programa de usuario sobre otro sistema operativo.
Un protocolo de comunicaciones llamado Styx se aplica de manera uniforme para acceder a recursos tanto locales como remotos, que los programas utilizan llamando a las operaciones de archivo estándar, abrir, leer, escribir y cerrar. A partir de la cuarta edición de Inferno, Styx es idéntico a la versión más reciente de Plan 9 de su protocolo distintivo 9P , 9P2000 .
La mayoría de los comandos de Inferno son muy similares a los comandos de Unix con el mismo nombre. [5]
Historia
Inferno es un descendiente de Plan 9 de Bell Labs y comparte muchos conceptos de diseño e incluso código fuente en el kernel, particularmente en dispositivos y el protocolo Styx / 9P2000. Inferno comparte con Plan 9 la herencia Unix de Bell Labs y la filosofía Unix . Muchas de las herramientas de línea de comando en Inferno eran herramientas de Plan 9 que se tradujeron a Limbo.
A mediados de la década de 1990, el desarrollo del Plan 9 se dejó de lado a favor de Inferno. [6] Dennis Ritchie filtró la existencia del nuevo sistema a principios de 1996, después de menos de un año de desarrollo del sistema, y lo presentó públicamente ese mismo año como un competidor de Java. Al mismo tiempo, la empresa matriz de Bell Labs, AT&T, obtuvo la licencia de la tecnología Java de Sun Microsystems . [7]
En marzo-abril de 1997, IEEE Internet Computing incluyó un anuncio del software de red Inferno. Afirmó que varios dispositivos podrían comunicarse a través de "cualquier red", incluida Internet, telecomunicaciones y LAN. El anuncio decía que los videojuegos podían comunicarse con las computadoras (se veía una PlayStation) , los teléfonos celulares podían acceder al correo electrónico y el correo de voz estaba disponible a través de la televisión.
Lucent usó Inferno en al menos dos productos internos: Lucent VPN Firewall Brick y el conmutador de teléfono Lucent Pathstar. Inicialmente intentaron vender licencias de código fuente de Inferno pero encontraron pocos compradores. Lucent hizo poco marketing y pasó por alto la importancia de Internet y la relación de Inferno con él. Durante el mismo tiempo, Sun Microsystems estaba comercializando fuertemente su propio lenguaje de programación Java , que se dirigía a un mercado similar, con tecnología análoga, que funcionaba en navegadores web y también satisfacía la demanda de lenguajes orientados a objetos populares en ese momento. Lucent obtuvo la licencia de Java de Sun, afirmando que todos los dispositivos Inferno estarían hechos para ejecutar Java. Se escribió un código de bytes de Java a un traductor de código de bytes Dis para facilitar eso. Sin embargo, Inferno todavía no encontró clientes.
La Unidad de Negocio Inferno cerró después de tres años y fue vendida a Vita Nuova . Vita Nuova continuó con el desarrollo y ofreció licencias comerciales para el sistema completo, descargas y licencias gratuitas (no compatibles con GPL ) para todo el sistema, excepto el kernel y la VM. Portaron el software a un nuevo hardware y se centraron en aplicaciones distribuidas. Finalmente, Vita Nuova lanzó la fuente bajo la licencia GPL y el sistema operativo Inferno ahora es un proyecto de software libre / libre / de código abierto.
Fecha | Lanzamiento | Comentario |
---|---|---|
1996 | Inferno Beta | Publicado por Bell Labs |
Mayo de 1997 | Inferno Release 1.0 | Invierno de 1997 Artículo de la revista técnica de Bell Labs |
Julio de 1999 | Inferno 2nd Edition | Publicado por la unidad de negocios Inferno de Lucent |
Junio de 2001 | Inferno 3rd Edition | Publicado por Vita Nuova |
2004 | Inferno 4ta edición | Lanzamiento de código abierto; cambios en muchas interfaces (incompatible con ediciones anteriores); incluye soporte para 9P2000. |
Puertos
Inferno se ejecuta directamente en hardware nativo y también como una aplicación que proporciona un sistema operativo virtual que se ejecuta en otras plataformas. Los programas se pueden desarrollar y ejecutar en todas las plataformas de Inferno sin modificación ni recompilación.
Los puertos nativos incluyen estas arquitecturas: x86 , MIPS , ARM , PowerPC , SPARC .
Los puertos de SO virtual o alojado incluyen: Microsoft Windows , Linux , FreeBSD , Plan 9 , Mac OS X , Solaris , IRIX , UnixWare .
Inferno también se puede alojar mediante un complemento de Internet Explorer . [8] Vita Nuova dijo que se estaban desarrollando complementos para otros navegadores, pero que nunca se lanzaron. [9]
Inferno también ha sido adaptado a Openmoko , [10] Nintendo DS , [11] [12] SheevaPlug , [13] y Android . [14]
Distribución
Inferno 4th edition se lanzó a principios de 2005 como software gratuito . Específicamente, tenía doble licencia bajo dos licencias. [15] Los usuarios pueden obtenerlo bajo un conjunto de licencias de software libre , o pueden obtenerlo bajo una licencia propietaria. En el caso del esquema de licencia de software libre, las diferentes partes del sistema fueron cubiertos por diferentes licencias, incluyendo la Licencia Pública General de GNU , la Licencia Pública General Reducida de GNU , la Licencia Pública Lucent , y la licencia MIT . Posteriormente, Vita Nuova ha hecho posible adquirir todo el sistema (excluyendo las fuentes, que están sublicenciadas de Bigelow y Holmes ) bajo la GPLv2 . Las tres opciones de licencia están disponibles actualmente.
Ver también
- Sistema basado en idiomas
- Singularidad (sistema operativo)
Referencias
- ^ Dorward, Sean; Pike, Rob; Presotto, David Leo; Ritchie, Dennis M .; Trickey, Howard; Winterbottom, Phil (1997). "El sistema operativo Inferno" . Documentación del infierno . Vita Nuova . Consultado el 2 de mayo de 2014 .
- ^ "inferno-os / inferno-os - Bitbucket" . Consultado el 19 de abril de 2019 .
- ^ Lorenz Huelsbergen y Phil Winterbottom. "Recolección de basura de marcado y barrido muy concurrente sin sincronización de grano fino" (PDF) . Cite journal requiere
|journal=
( ayuda ) - ^ "El Sistema Operativo Inferno" (artículos). Vita nuova. Cite journal requiere
|journal=
( ayuda ) - ^ http://man.cat-v.org/inferno/1/
- ^ Pontin, Jason (19 de febrero de 1996). "AT&T revela planes para competidor de Java" . InfoWorld . pag. 3.
- ^ Hayes, Frank (19 de febrero de 1996). "Bell Lab's Inferno tiene como objetivo rivalizar con Java" . Computerworld . pag. 6.
- ^ "Código de apoyo para permitir que Inferno actúe como complemento en varios navegadores" .
- ^ Complementos , Vita Nuova.
- ^ "inferno-openmoko - inferno para openmoko neo freerunner - Google Project Hosting" . Code.google.com . Consultado el 4 de junio de 2012 .
- ^ "inferno-ds - Inferno Kernel para Nintendo DS - Google Project Hosting" . Code.google.com . Consultado el 4 de junio de 2012 .
- ^ "inferno-ds: Native Inferno Kernel para Nintendo DS" . bitbucket.org. Archivado desde el original el 23 de agosto de 2017 . Consultado el 17 de marzo de 2018 .
- ^ "inferno-kirkwood - Inferno para Marvell Kirkwood / Sheevaplug - Alojamiento de proyectos de Google" . Code.google.com . Consultado el 4 de junio de 2012 .
- ^ infierno (29 de septiembre de 2011). "floren / inferno / wiki / Inicio - Bitbucket" . Bitbucket.org . Consultado el 4 de junio de 2012 .
- ^ "Términos de la licencia de Inferno" .
Otras lecturas
- Stanley-Marbell, Phillip (2003). "Programación Infernal con Limbo". Chichester: John Wiley & Sons. ISBN 0-470-84352-7. Cite journal requiere
|journal=
( ayuda )describe la 3ª edición del sistema operativo Inferno, aunque se centra más en el lenguaje Limbo y sus interfaces con el sistema Inferno, que en el sistema Inferno en sí. Por ejemplo, proporciona poca información sobre la versátil consola de comandos de Inferno , lo cual es comprensible ya que es un libro de texto de lenguaje de programación. - Stuart, Brian (2008). Principios de los sistemas operativos: diseño y aplicaciones . Tecnología del curso. ISBN 1-4188-3769-5., usa Inferno para ejemplos de diseño de sistema operativo.
- Atkins, Martin; Forsyth, Charles; Pike, Rob ; Trickey, Howard. "El libro de programación Inferno: una introducción a la programación para el sistema distribuido Inferno". Cite journal requiere
|journal=
( ayuda ) tenía la intención de proporcionar un punto de vista centrado en el sistema operativo, pero nunca se completó.
enlaces externos
- Papeles de documentación para la última versión de inferno.
- Descarga de Inferno Fourth Edition , incluido el código fuente.
- Lista de correo y otros recursos .
- Ninetimes : Noticias y artículos sobre Inferno, Plan 9 y tecnologías relacionadas.
- Cuaderno del programador de Inferno : un diario elaborado por un desarrollador de Inferno.
- Prueba Inferno : acceso gratuito en el navegador a un sistema Inferno en vivo.
- Inferno OS a Raspberry Pi Labs: portando Inferno OS a Raspberry Pi