Plan 9 de Bell Labs

Sistema operativo distribuido de investigación desarrollado en Bell Labs

Sistema operativo
Plan 9 de Bell Labs
Glenda, la mascota del Plan 9 con traje espacial, dibujada por Renée French [1] [2]
rio , interfaz de usuario predeterminada de Plan 9 de Bell Labs
ReveladorFundación Plan 9, sucesora de los Laboratorios Bell
Escrito enDialecto del ANSI C
Estado de funcionamientoActual [3] [4]
Modelo fuenteCódigo abierto
Lanzamiento inicial1992 ; hace 32 años (universidades) /  ( 1992 ) 1995 ; hace 29 años (público en general) ( 1995 )
Versión finalCuarta Edición / 10 de enero de 2015 ; hace 9 años [5] ( 10-01-2015 )
Repositorio9p.io/fuentes/plan9/sys [6]
Objetivo de marketingInvestigación de sistemas operativos, entornos en red, uso general
Disponible enInglés
Plataformasx86 / Vx32 , x86-64 , MIPS , DEC Alpha , SPARC , PowerPC , ARM
Tipo de kernelMonolítico [7]
Influenciado porInvestigación Unix , Sistema de computación distribuida de Cambridge [8]

Interfaz de usuario predeterminada
río / rc
Licencia2021: MIT [9] [10]
2014: Solo GPL-2.0 [11]
2002: LPL-1.02 [12]
2000: Plan 9 OSL [13] [14] [15] [16]
Sucedido porInferno
Otros derivados y bifurcaciones
Sitio web oficialp9f.org

Plan 9 de Bell Labs es un sistema operativo distribuido que se originó en el Centro de Investigación de Ciencias de la Computación (CSRC) de Bell Labs a mediados de la década de 1980 y se basó en conceptos UNIX desarrollados allí por primera vez a fines de la década de 1960. Desde el año 2000, Plan 9 es gratuito y de código abierto . El lanzamiento oficial final se realizó a principios de 2015.

Con Plan 9, la metáfora de UNIX de que todo es un archivo se extiende a través de un sistema de archivos centrado en la red , y la E/S basada en terminal y direccionada por cursor en el corazón de los sistemas operativos tipo UNIX se reemplaza por un sistema de ventanas y una interfaz gráfica de usuario sin direccionamiento del cursor, aunque rc , el shell de Plan 9 , está basado en texto.

El nombre Plan 9 de Bell Labs es una referencia a la película de culto de ciencia ficción de Ed Wood de 1957 , Plan 9 from Outer Space . [17] El sistema sigue siendo utilizado y desarrollado por investigadores y aficionados a los sistemas operativos. [18] [19]

Historia

Captura de pantalla de la instalación de Plan 9

Plan 9 de Bell Labs fue desarrollado originalmente, a partir de finales de la década de 1980, [19] por miembros del Centro de Investigación de Ciencias de la Computación de Bell Labs, el mismo grupo que desarrolló originalmente Unix y el lenguaje de programación C. [ 20] El equipo de Plan 9 fue liderado inicialmente por Rob Pike , Ken Thompson , Dave Presotto y Phil Winterbottom, con el apoyo de Dennis Ritchie como jefe del Departamento de Investigación de Técnicas de Computación. A lo largo de los años, muchos desarrolladores notables han contribuido al proyecto, incluidos Brian Kernighan , Tom Duff , Doug McIlroy , Bjarne Stroustrup y Bruce Ellis. [21]

Plan 9 reemplazó a Unix como la plataforma principal de Bell Labs para la investigación de sistemas operativos. [22] Exploró varios cambios al modelo Unix original que facilitan el uso y la programación del sistema, en particular en entornos multiusuario distribuidos . Después de varios años de desarrollo y uso interno, Bell Labs envió el sistema operativo a universidades en 1992. Tres años más tarde, AT&T puso Plan 9 a disposición de partes comerciales a través de la editorial Harcourt Brace . Con licencias de código fuente que costaban $350, AT&T apuntó al mercado de sistemas integrados en lugar del mercado de computadoras en general. Ritchie comentó que los desarrolladores no esperaban hacer "mucho desplazamiento" dado lo establecidos que se habían vuelto otros sistemas operativos. [23]

A principios de 1996, el proyecto Plan 9 había sido "dejado de lado" por AT&T en favor de Inferno , destinado a ser un rival para la plataforma Java de Sun Microsystems . [24] A fines de la década de 1990, el nuevo propietario de Bell Labs, Lucent Technologies, abandonó el soporte comercial para el proyecto y en 2000, se distribuyó una tercera versión bajo una licencia de código abierto . [25] Una cuarta versión bajo una nueva licencia de software libre ocurrió en 2002. [26] A principios de 2015, ocurrió el lanzamiento oficial final de Plan 9. [25]

Una comunidad de usuarios y desarrolladores, que incluía personal actual y anterior de Bell Labs , produjo versiones diarias menores en forma de imágenes ISO . Bell Labs alojó el desarrollo. [27] El árbol de código fuente de desarrollo es accesible a través de los protocolos 9P y HTTP y se utiliza para actualizar las instalaciones existentes. [28] Además de los componentes oficiales del SO incluidos en las ISO, Bell Labs también aloja un repositorio de aplicaciones y herramientas desarrolladas externamente. [29]

A medida que Bell Labs pasó a proyectos posteriores en los últimos años, el desarrollo del sistema oficial Plan 9 se detuvo. El 23 de marzo de 2021, el desarrollo se reanudó tras la transferencia de los derechos de autor de Bell Labs a Plan 9 Foundation. [10] [30] [31] El desarrollo no oficial del sistema también continúa en la bifurcación 9front, donde los contribuyentes activos proporcionan compilaciones mensuales y nuevas funcionalidades. Hasta ahora, la bifurcación 9front ha proporcionado al sistema controladores de Wi-Fi , controladores de audio, soporte USB y emulador de juegos integrado, junto con otras características. [32] [33] Otros sistemas operativos recientes inspirados en Plan 9 incluyen Harvey OS [34] y Jehanne OS. [35]

FechaLiberarComentario
1992Plan 9 1ª ediciónLanzado por Bell Labs a las universidades
1995Plan 9 2da ediciónPublicado por Bell Labs con fines no comerciales [36]
2000Plan 9 3ra ed. ( Brasil )Publicado por Lucent Technologies bajo una licencia de código abierto
2002Plan 9 4ta ediciónLanzado por Lucent Technologies bajo una nueva licencia de software libre

Conceptos de diseño

Plan 9 de Bell Labs es como los cuáqueros : se distingue por su énfasis en la "luz interior", destaca por su sencillez de vida, en particular por su franqueza al hablar. Al igual que los cuáqueros, Plan 9 no hace proselitismo.

—Sape J. Mullender, Pierre G. Jansen.
Tiempo real en un sistema operativo real [37]

Plan 9 es un sistema operativo distribuido , diseñado para hacer que una red de computadoras heterogéneas y geográficamente separadas funcione como un solo sistema. [38] En una instalación típica de Plan 9, los usuarios trabajan en terminales que ejecutan el sistema de ventanas rio y acceden a servidores de CPU que manejan procesos de computación intensiva. El almacenamiento permanente de datos es proporcionado por hosts de red adicionales que actúan como servidores de archivos y almacenamiento de archivos. [39]

Sus diseñadores afirman que,

[l]os cimientos del sistema se basan en dos ideas: un espacio de nombres por proceso y un protocolo de sistema de archivos simple orientado a mensajes.

—  Pike y otros [40]

La primera idea (un espacio de nombres por proceso) significa que, a diferencia de la mayoría de los sistemas operativos, los procesos (programas en ejecución) tienen cada uno su propia vista del espacio de nombres , correspondiente a lo que otros sistemas operativos llaman el sistema de archivos; un único nombre de ruta puede hacer referencia a diferentes recursos para diferentes procesos. La complejidad potencial de esta configuración está controlada por un conjunto de ubicaciones convencionales para recursos comunes. [41] [42]

La segunda idea (un sistema de archivos orientado a mensajes) significa que los procesos pueden ofrecer sus servicios a otros procesos proporcionando archivos virtuales que aparecen en el espacio de nombres de los otros procesos. La entrada/salida del proceso cliente en dicho archivo se convierte en comunicación entre procesos. De esta manera, Plan 9 generaliza la noción Unix del sistema de archivos como el punto central de acceso a los recursos informáticos. Lleva la idea de Unix de archivos de dispositivo para proporcionar acceso a dispositivos periféricos ( ratones , medios extraíbles, etc.) y la posibilidad de montar sistemas de archivos que residen en sistemas de archivos físicamente distintos en un espacio de nombres jerárquico, pero agrega la posibilidad de montar una conexión a un programa servidor que habla un protocolo estandarizado y trata sus servicios como parte del espacio de nombres.

Por ejemplo, el sistema de ventanas original, llamado 8½, explotó estas posibilidades de la siguiente manera. Plan 9 representa la interfaz de usuario en un terminal por medio de tres pseudoarchivos: mouse , que puede ser leído por un programa para obtener notificación de movimientos del mouse y clics de botones, cons , que puede usarse para realizar entrada/salida de texto, y bitblt , cuya escritura realiza operaciones gráficas (ver bit blit ). El sistema de ventanas multiplexa estos dispositivos: al crear una nueva ventana para ejecutar algún programa, primero establece un nuevo espacio de nombres en el que mouse , cons y bitblt están conectados a sí mismo, ocultando los archivos de dispositivo reales a los que él mismo tiene acceso. El sistema de ventanas recibe así todos los comandos de entrada y salida del programa y los maneja apropiadamente, enviando la salida al dispositivo de pantalla real y dando al programa actualmente enfocado la entrada de teclado y mouse. [39] El programa no necesita saber si se está comunicando directamente con los controladores de dispositivo del sistema operativo o con el sistema de ventanas; Sólo tiene que asumir que su espacio de nombres está configurado para que estos archivos especiales proporcionen el tipo de entrada y acepten el tipo de mensajes que espera.

La operación distribuida de Plan 9 también depende de los espacios de nombres por proceso, lo que permite que los procesos de cliente y servidor se comuniquen entre máquinas de la manera que se acaba de describir. Por ejemplo, el comando cpu inicia una sesión remota en un servidor de computación. El comando exporta parte de su espacio de nombres local, incluidos los dispositivos de la terminal del usuario ( mouse , cons , bitblt ), al servidor, de modo que los programas remotos puedan realizar entradas y salidas utilizando el mouse, el teclado y la pantalla de la terminal, combinando los efectos del inicio de sesión remoto y un sistema de archivos de red compartido. [39] [40]

Protocolo 9P

Todos los programas que desean proporcionar servicios como archivos a otros programas hablan un protocolo unificado, llamado 9P. En comparación con otros sistemas, esto reduce la cantidad de interfaces de programación personalizadas . 9P es un protocolo genérico, independiente del medio y orientado a bytes que proporciona mensajes entregados entre un servidor y un cliente. [43] El protocolo se utiliza para hacer referencia y comunicarse con procesos, programas y datos, incluida la interfaz de usuario y la red. [44] Con el lanzamiento de la cuarta edición, se modificó y se renombró 9P2000. [26]

A diferencia de la mayoría de los demás sistemas operativos, Plan 9 no proporciona interfaces de programación de aplicaciones especiales (como los sockets Berkeley , los recursos X o las llamadas al sistema ioctl ) para acceder a los dispositivos. [43] En cambio, los controladores de dispositivos de Plan 9 implementan su interfaz de control como un sistema de archivos, de modo que se pueda acceder al hardware mediante las operaciones de entrada/salida de archivos habituales read y write . En consecuencia, compartir el dispositivo a través de la red se puede lograr montando el árbol de directorios correspondiente en la máquina de destino. [17]

Directorios y espacios de nombres de unión

Plan 9 permite al usuario recopilar los archivos (llamados names ) de diferentes árboles de directorios en una única ubicación. El directorio de unión resultante se comporta como la concatenación de los directorios subyacentes (el orden de concatenación se puede controlar); si los directorios constituyentes contienen archivos que tienen el mismo nombre, una lista del directorio de unión ( ls o lc ) simplemente informará los nombres duplicados. [45] La resolución de un único nombre de ruta se realiza de arriba hacia abajo: si los directorios top y bottom se unen en u con top primero, entonces u/name denota top/name si existe, bottom/name solo si existe y top/name no existe , y ningún archivo si ninguno existe. No se realiza una unión recursiva de subdirectorios, por lo que si top/subdir existe, los archivos en bottom/subdir no son accesibles a través de la unión. [46]

Se puede crear un directorio de unión mediante una secuencia de comandos de enlace :

enlazar /brazo/bin /binenlazar -a /acme/bin/arm /binenlazar -b /usr/alice/bin /bin

En el ejemplo anterior, /arm/bin se monta en /bin , y el contenido de /arm/bin reemplaza el contenido anterior de /bin . El directorio bin de Acme se monta mediante unión después de /bin , y el directorio bin personal de Alice se monta mediante unión antes. Cuando se solicita un archivo desde /bin , primero se busca en /usr/alice/bin , luego en /arm/bin y finalmente en /acme/bin/arm .

Los espacios de nombres de procesos separados generalmente reemplazan la noción de una ruta de búsqueda en el shell. Una variable de entorno path ( $path) todavía existe en el shell rc (el shell utilizado principalmente en Plan 9); sin embargo, la variable de entorno path de rc convencionalmente solo contiene los /bindirectorios .y y se desaconseja modificar la variable, en su lugar, agregar comandos adicionales debe hacerse vinculando varios directorios juntos como un solo /bin. [47] [39] A diferencia de Plan 9, la variable de entorno path de los shells Unix debe configurarse para incluir los directorios adicionales cuyos archivos ejecutables deben agregarse como comandos.

Además, el núcleo puede mantener tablas de montaje separadas para cada proceso, [37] y, por lo tanto, puede proporcionar a cada proceso su propio espacio de nombres de sistema de archivos . Los espacios de nombres de los procesos se pueden construir de forma independiente y el usuario puede trabajar simultáneamente con programas que tengan espacios de nombres heterogéneos. [40] Los espacios de nombres se pueden utilizar para crear un entorno aislado similar a chroot , pero de una manera más segura. [43]

La arquitectura de directorio de unión de Plan 9 inspiró las implementaciones del sistema de archivos de unión de 4.4BSD y Linux , [45] aunque los desarrolladores de la facilidad de montaje de unión de BSD encontraron que la fusión no recursiva de directorios en Plan 9 era "demasiado restrictiva para un uso de propósito general". [46]

Sistema de archivos virtual especial

/proc

Listado de procesos con contenido de lista de directorio (ls, lc) comando [48] en /proc

En lugar de tener llamadas de sistema específicamente para la gestión de procesos , Plan 9 ofrece el sistema de archivos /proc . Cada proceso aparece como un directorio que contiene información y archivos de control que pueden manipularse mediante las llamadas de sistema de E/S de archivos habituales. [8]

El enfoque del sistema de archivos permite que los procesos de Plan 9 se administren con herramientas de administración de archivos simples como ls y cat ; sin embargo, los procesos no se pueden copiar ni mover como archivos. [8]

/neto

Plan 9 no tiene llamadas de sistema especializadas ni ioctls para acceder a la pila de red o al hardware de red. En su lugar, se utiliza el sistema de archivos /net . Las conexiones de red se controlan mediante la lectura y escritura de mensajes de control en los archivos de control. Los subdirectorios como /net/tcp y /net/udp se utilizan como interfaz para sus respectivos protocolos. [8]

Unicode

Para reducir la complejidad de la gestión de codificaciones de caracteres , Plan 9 utiliza Unicode en todo el sistema. La implementación inicial de Unicode fue ISO/IEC 10646-1:1993 . Ken Thompson inventó UTF-8, que se convirtió en la codificación nativa en Plan 9. Todo el sistema se convirtió para uso general en 1992. [49] UTF-8 conserva la compatibilidad con las cadenas tradicionales terminadas en nulo , lo que permite un procesamiento de información más confiable y el encadenamiento de datos de cadenas multilingües con tuberías Unix entre múltiples procesos. El uso de una única codificación UTF-8 con caracteres para todas las culturas y regiones elimina la necesidad de cambiar entre conjuntos de códigos. [50]

Combinando los conceptos de diseño

Aunque interesantes por sí solos, se suponía que los conceptos de diseño de Plan 9 serían más útiles cuando se combinaban. Por ejemplo, para implementar un servidor de traducción de direcciones de red (NAT), se puede crear un directorio de unión, superponiendo el árbol de directorios /net del enrutador con su propio /net . De manera similar, se puede implementar una red privada virtual (VPN) superponiendo en un directorio de unión una jerarquía /net desde una puerta de enlace remota , utilizando 9P seguro sobre Internet público. Se puede utilizar un directorio de unión con la jerarquía /net y filtros para aislar una aplicación no confiable o para implementar un firewall . [43] De la misma manera, se puede componer una red informática distribuida con un directorio de unión de jerarquías /proc desde hosts remotos, lo que permite interactuar con ellos como si fueran locales.

Cuando se utilizan juntas, estas características permiten ensamblar un entorno informático distribuido complejo reutilizando el sistema de nombres jerárquico existente. [8]

Software para Plan 9

Como beneficio del diseño del sistema, la mayoría de las tareas en Plan 9 se pueden realizar utilizando las utilidades ls , cat , grep , cp y rm en combinación con el shell rc (el shell predeterminado de Plan 9).

Factotum es un servidor de autenticación y gestión de claves para Plan 9. Se encarga de la autenticación en nombre de otros programas, de modo que tanto las claves secretas como los detalles de implementación solo deben ser conocidos por Factotum. [51]

Programas gráficos

Plan 9 ejecutando acme y rc

A diferencia de Unix , Plan 9 fue diseñado con gráficos en mente. [44] Después del arranque, una terminal de Plan 9 ejecutará el sistema de ventanas rio , en el que el usuario puede crear nuevas ventanas que muestren rc . [52] Los programas gráficos invocados desde este shell lo reemplazan en su ventana.

El fontanero proporciona un mecanismo de comunicación entre procesos que permite la hiperconexión en todo el sistema.

Sam y Acme son los editores de texto de Plan 9. [53]

Sistema de almacenamiento

Plan 9 es compatible con los sistemas de archivos Kfs, Paq, Cwfs, FAT y Fossil . Este último fue diseñado en Bell Labs específicamente para Plan 9 y ofrece capacidad de almacenamiento de instantáneas. Se puede utilizar directamente con un disco duro o respaldado con Venti , un sistema de archivos de archivo y un sistema de almacenamiento de datos permanente.

Desarrollo de software

El paquete de distribución de Plan 9 incluye variantes especiales del compilador y lenguajes de programación, y proporciona un conjunto de bibliotecas a medida junto con un sistema de interfaz de usuario con ventanas específico para Plan 9. [54] La mayor parte del sistema está escrito en un dialecto de C ( ANSI C con algunas extensiones y otras características omitidas). Los compiladores para este lenguaje fueron creados a medida teniendo en mente la portabilidad; según su autor, "compilan rápidamente, cargan lentamente y producen código objeto de calidad media". [55]

Un lenguaje de programación concurrente llamado Alef estaba disponible en las dos primeras ediciones, pero luego fue abandonado por razones de mantenimiento y reemplazado por una biblioteca de subprocesos para C. [56] [57]

Compatibilidad con Unix

Aunque se suponía que Plan 9 sería un desarrollo posterior de los conceptos de Unix, la compatibilidad con el software Unix preexistente nunca fue el objetivo del proyecto. Muchas utilidades de línea de comandos de Plan 9 comparten los nombres de sus contrapartes de Unix, pero funcionan de manera diferente. [48]

Plan 9 puede soportar aplicaciones POSIX y puede emular la interfaz de socket de Berkeley a través del entorno ANSI/POSIX (APE) que implementa una interfaz cercana a ANSI C y POSIX , con algunas extensiones comunes (las interfaces nativas de Plan 9 C no se ajustan a ninguno de los estándares). También incluye un shell compatible con POSIX. Los autores de APE afirman haberlo utilizado para portar el sistema X Window (X11) a Plan 9, aunque no incluyen X11 "porque soportarlo adecuadamente es un trabajo demasiado grande". [58] Algunos binarios de Linux se pueden utilizar con la ayuda de una aplicación "linuxemu" (emulador de Linux); sin embargo, todavía es un trabajo en progreso. [59] Viceversa, la máquina virtual Vx32 permite que un núcleo de Plan 9 ligeramente modificado se ejecute como un proceso de usuario en Linux, lo que admite programas de Plan 9 sin modificar. [60]

Recepción

Comparación con los sistemas operativos contemporáneos

En 1991, los diseñadores de Plan 9 compararon su sistema con otros sistemas operativos de principios de los noventa en términos de tamaño, y demostraron que el código fuente de una versión mínima ("que funcionaba, aunque no era muy útil") era menos de una quinta parte del tamaño de un microkernel Mach sin ningún controlador de dispositivo (5899 o 4622 líneas de código para Plan 9, dependiendo de la métrica, frente a 25530 líneas). El núcleo completo comprendía 18000 líneas de código. [39] (Según un recuento de 2006, el núcleo tenía entonces unas 150.000 líneas, pero esto se comparó con más de 4,8 millones en Linux . [43] )

Dentro de la comunidad de investigación de sistemas operativos, así como en el mundo comercial de Unix, se hicieron otros intentos de lograr computación distribuida y acceso remoto al sistema de archivos simultáneamente con el esfuerzo de diseño de Plan 9. Estos incluyeron el Sistema de Archivos de Red y la arquitectura vnode asociada desarrollada en Sun Microsystems , y desviaciones más radicales del modelo Unix como el sistema operativo Sprite de UC Berkeley . El desarrollador de Sprite, Brent Welch, señala que la arquitectura vnode de SunOS es limitada en comparación con las capacidades de Plan 9 en el sentido de que no admite el acceso remoto a dispositivos y la comunicación remota entre procesos de manera limpia, aunque podría haberlo hecho, si los sockets de dominio UNIX preexistentes (que "esencialmente se pueden usar para nombrar servidores a nivel de usuario") se hubieran integrado con la arquitectura vnode. [41]

Una crítica al diseño de comunicación por mensaje de texto "todo es un archivo" de Plan 9 señaló las limitaciones de este paradigma en comparación con las interfaces tipificadas del sistema operativo orientado a objetos de Sun , Spring :

Plan 9 obliga a que todo parezca un archivo. En la mayoría de los casos, el tipo de interfaz real comprende el protocolo de mensajes que deben escribirse y leerse en un descriptor de archivo. Esto es difícil de especificar y documentar, y prohíbe cualquier comprobación automática de tipos , excepto en el caso de errores de archivo en tiempo de ejecución. (...) [U]na ruta relativa al contexto raíz implícito de un proceso es la única forma de nombrar un servicio. La vinculación de un nombre a un objeto solo se puede hacer dando un nombre existente para el objeto, en el mismo contexto que el nuevo nombre. Como tal, las referencias de interfaz simplemente no se pueden pasar entre procesos, mucho menos a través de redes. En cambio, la comunicación tiene que depender de convenciones, que son propensas a errores y no escalables.

—  Roscoe; énfasis en el original. [61]

Una comparación retrospectiva posterior de Plan 9, Sprite y un tercer sistema operativo de investigación distribuida contemporáneo, Amoeba , encontró que

Los entornos que construyen [Amoeba y Sprite] están estrechamente acoplados dentro del SO, lo que dificulta la comunicación con servicios externos. Estos sistemas sufren el abandono radical del modelo UNIX, que también desalienta la portabilidad de software ya existente a la plataforma (...). La falta de desarrolladores, la gama muy pequeña de hardware compatible y la pequeña base de usuarios, incluso en comparación con Plan 9, también han ralentizado significativamente la adopción de esos sistemas (...). En retrospectiva, Plan 9 fue el único SO distribuido de investigación de esa época que logró atraer a los desarrolladores y ser utilizado en proyectos comerciales durante el tiempo suficiente como para justificar su supervivencia hasta el día de hoy.

—  Mirtchovski, Simmonds y Minnich [62]

Impacto

El administrador de ventanas X wmii se inspiró en acme , un editor de texto del proyecto Plan 9. [63]

Plan 9 demostró que un concepto integral de Unix (que cada interfaz del sistema podía representarse como un conjunto de archivos) podía implementarse con éxito en un sistema distribuido moderno. [52] Algunas características de Plan 9, como la codificación de caracteres UTF-8 de Unicode, se han implementado en otros sistemas operativos. Los sistemas operativos tipo Unix como Linux han implementado 9P2000, el protocolo de Plan 9 para acceder a archivos remotos, y han adoptado características de rfork , el mecanismo de creación de procesos de Plan 9. [64] Además, en Plan 9 from User Space , varias de las aplicaciones y herramientas de Plan 9, incluidos los editores sam y acme, se han portado a sistemas Unix y Linux y han alcanzado cierto nivel de popularidad. Varios proyectos buscan reemplazar los programas del sistema operativo GNU que rodean al núcleo Linux con los programas del sistema operativo Plan 9. [65] [66] El administrador de ventanas 9wm se inspiró en , el antiguo sistema de ventanas de Plan 9; [67] wmii también está muy influenciado por Plan 9. [63] En la investigación informática, Plan 9 se ha utilizado como plataforma de computación en red [68] [62] y como vehículo para la investigación de la computación ubicua sin middleware . [69] En el comercio, Plan 9 es la base de los sistemas de almacenamiento Coraid . Sin embargo, Plan 9 nunca se ha acercado a Unix en popularidad, y ha sido principalmente una herramienta de investigación:

Parece que Plan 9 fracasó simplemente porque no logró ser una mejora lo suficientemente convincente de Unix como para desplazar a su antecesor. Comparado con Plan 9, Unix cruje, hace ruido y tiene manchas de óxido evidentes, pero hace bien su trabajo lo suficiente como para mantener su posición. Aquí hay una lección para los arquitectos de sistemas ambiciosos: el enemigo más peligroso de una mejor solución es una base de código existente que es lo suficientemente buena.

—  Eric S. Raymond [17]

Otros factores que contribuyeron a la baja adopción de Plan 9 incluyen la falta de respaldo comercial, el bajo número de aplicaciones para el usuario final y la falta de controladores de dispositivos . [52] [53]

Los promotores y desarrolladores de Plan 9 afirman que los problemas que obstaculizaban su adopción se han resuelto, que se han cumplido sus objetivos originales como sistema distribuido, entorno de desarrollo y plataforma de investigación, y que goza de una popularidad moderada pero creciente. [ cita requerida ] Inferno , a través de sus capacidades alojadas, ha sido un vehículo para llevar las tecnologías de Plan 9 a otros sistemas como parte alojada de redes informáticas heterogéneas. [70] [71] [72]

Varios proyectos trabajan para extender Plan 9, incluyendo 9atom y 9front. Estas bifurcaciones aumentan Plan 9 con controladores de hardware y software adicionales, incluyendo una versión mejorada del sistema de correo electrónico Upas , el compilador Go , soporte del sistema de control de versiones Mercurial (y ahora también una implementación git), y otros programas. [19] [73] Plan 9 fue portado a la computadora de placa única Raspberry Pi . [74] [75] El proyecto Harvey intenta reemplazar el compilador C personalizado de Plan 9 con GCC , para aprovechar las herramientas de desarrollo modernas como GitHub y Coverity , y acelerar el desarrollo. [76]

Desde la versión 1903 de Windows 10 , el Subsistema de Windows para Linux implementa el Protocolo de sistema de archivos Plan 9 como servidor y el sistema operativo host Windows actúa como cliente. [77]

Derivados y bifurcaciones

  • Inferno es un descendiente de Plan 9 y comparte muchos conceptos de diseño e incluso código fuente en el núcleo, particularmente en lo que respecta a los 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 comandos en Inferno eran herramientas de Plan 9 que se tradujeron a Limbo .
  • 9atom [78] amplía la distribución Plan 9 con la incorporación de un núcleo PAE 386 , un núcleo de CPU y terminal amd64, nupas, soporte de hardware de PC adicional, IL y el sistema de archivos de Ken. [79] [80]
  • 9front [81] es una bifurcación de Plan 9. Se inició para remediar una falta percibida de recursos de desarrollo dedicados dentro de Bell Labs, y ha acumulado varias correcciones y mejoras.
  • 9legacy [82] es una distribución alternativa que incluye un conjunto de parches basados ​​en la distribución actual de Plan 9.
  • Akaros [83] está diseñado para arquitecturas de múltiples núcleos y sistemas SMP a gran escala.
  • Harvey OS [84] es un esfuerzo por lograr que el código del Plan 9 funcione con gcc y clang.
  • JehanneOS [85] es un sistema operativo experimental derivado de Plan 9. Su espacio de usuario y módulos se derivan principalmente de 9front, su sistema de compilación de Harvey OS y su núcleo es una bifurcación del núcleo Plan9-9k de 64 bits.
  • NIX [86] [ se necesita una mejor fuente ] es una bifurcación de Plan9 orientada a sistemas multinúcleo y computación en la nube.
  • node9 [87] es un derivado con script de Plan9/Inferno que reemplaza el lenguaje de programación Limbo y la máquina virtual DIS con el lenguaje Lua y la máquina virtual LuaJit. También reemplaza la E/S hospedada por plataforma de Inferno con la gestión de eventos y la E/S de libuv de Node.js para un hospedaje consistente y multiplataforma. Es una prueba de concepto que demuestra que se puede construir un sistema operativo distribuido a partir de espacios de nombres por proceso y elementos de nube genéricos para construir una imagen de sistema único de tamaño arbitrario.
  • Plan B [88] está diseñado para funcionar en entornos distribuidos donde el conjunto de recursos disponibles es diferente en distintos momentos. Originalmente basado en el núcleo de Plan 9 de tercera edición, Plan B se trasladó al espacio de usuario para ejecutarse en los sistemas Plan 9 actuales. [89] [90] [91]

Licencia

A partir del lanzamiento de la cuarta edición en abril de 2002, [26] el código fuente completo de Plan 9 de Bell Labs está disponible gratuitamente bajo la Licencia Pública Lucent 1.02, que se considera una licencia de código abierto por la Open Source Initiative (OSI), una licencia de software libre por la Free Software Foundation , y pasa las Directrices de Software Libre de Debian . [43]

En febrero de 2014, la Universidad de California, Berkeley , recibió autorización del actual titular de los derechos de autor de Plan 9 , Alcatel-Lucent , para publicar todo el software de Plan 9 anteriormente regido por la Licencia Pública de Lucent, Versión 1.02, solo bajo la GPL-2.0 . [92]

El 23 de marzo de 2021, la propiedad de Plan 9 se transfirió de Bell Labs a Plan 9 Foundation, [93] y todas las versiones anteriores han sido licenciadas nuevamente bajo la Licencia MIT . [10]

Véase también

Referencias

  1. ^ "Plan 9 de Bell Labs".
  2. ^ Lucent Technologies (2006). "Glenda, la conejita del Plan 9" . Consultado el 2 de diciembre de 2008 .
  3. ^ "Plan 9 Foundation: Actividades". plan9foundation.org . Consultado el 23 de marzo de 2021 .
  4. ^ "9legacy". 9legacy.org . Consultado el 23 de marzo de 2021 .
  5. ^ "plan9checksums". Bell Labs. Archivado desde el original el 2017-06-01 . Consultado el 2019-07-25 . Sábado 10 de enero 04:04:55 EST 2015 ... plan9.iso.bz2
  6. ^ "Código fuente GPLv2".
  7. ^ Crawford, Diane (1999). "Forum". Comunicaciones de la ACM . 42 (8). Asociación para Maquinaria Informática (ACM): 11–15. doi :10.1145/310930.310939. ISSN  0001-0782. S2CID  263897745.
  8. ^ abcde Pike, R. ; Presotto, D. ; Dorward, S. ; Flandrena, B. ; Thompson, K. ; Trickey, H. ; Winterbottom, P. "Plan 9 de Bell Labs". Bell Labs . Lucent Technologies . Consultado el 26 de febrero de 2016 .
  9. ^ "Plan 9 Licencia". p9f.org . Archivado desde el original el 14 de junio de 2021 . Consultado el 14 de junio de 2021 .
  10. ^ "Plan9License". akaros.cs.berkeley.edu . Archivado desde el original el 13 de febrero de 2014 . Consultado el 14 de junio de 2021 . Alcatel-Lucent ha autorizado a la Universidad de California, Berkeley, a publicar todo el software de Plan 9 que anteriormente se regía por la Licencia Pública de Lucent, Versión 1.02, bajo la Licencia Pública General de GNU, Versión 2.
  11. ^ "Lucent Public License Version 1.02". plan9.bell-labs.com . Archivado desde el original el 3 de octubre de 2003 . Consultado el 14 de junio de 2021 .
  12. ^ "Licencia de código abierto de Plan 9 - Versión 1.4 - 09/10/02". plan9.bell-labs.com . Archivado desde el original el 18 de diciembre de 2002 . Consultado el 14 de junio de 2021 .
  13. ^ "Licencia de código abierto de Plan 9 - Versión 1.2 - 29/10/00". plan9.bell-labs.com . Archivado desde el original el 6 de diciembre de 2000 . Consultado el 14 de junio de 2021 .
  14. ^ "Licencia de código abierto de Plan 9 - Versión 1.1 - 20/09/00". plan9.bell-labs.com . Archivado desde el original el 26 de octubre de 2000 . Consultado el 14 de junio de 2021 .
  15. ^ "Acuerdo de licencia de código abierto de Plan 9". plan9.bell-labs.com . Archivado desde el original el 16 de agosto de 2000 . Consultado el 14 de junio de 2021 .
  16. ^ abc Raymond, Eric S. (17 de septiembre de 2003). "Plan 9: Así era el futuro". El arte de la programación en UNIX . Addison-Wesley . ISBN 0-13-142901-9. Consultado el 7 de mayo de 2007 .
  17. ^ Robertson, James (16 de julio de 2011). "Plan 9 se bifurcó y continúa como 9front". OSNews . Consultado el 31 de diciembre de 2011 .
  18. ^ abc "9atom". Archivado desde el original el 26 de julio de 2013. Consultado el 11 de noviembre de 2011 .
  19. ^ "De los inventores del sistema UNIX llega Plan 9 de Bell Labs" (Nota de prensa). Lucent Technologies. 18 de julio de 1995. Archivado desde el original el 9 de febrero de 2006.
  20. ^ McIlroy, Doug (marzo de 1995). "Prefacio". Bell Labs (2.ª ed.). Lucent Technologies . Consultado el 26 de febrero de 2016 .
  21. ^ Proven, Liam (29 de marzo de 2022). "El extraño mundo de los sistemas operativos que no son C". www.theregister.com . Consultado el 1 de septiembre de 2022 .
  22. ^ Lee, Yvonne L. (24 de julio de 1995). "AT&T Bell Labs lanza el sistema operativo Plan 9 para sistemas integrados". InfoWorld .
  23. ^ Pontin, Jason (19 de febrero de 1996). "AT&T revela planes para un competidor de Java". InfoWorld . p. 3.
  24. ^ ab "Bell Labs: una guía completa: historia, productos, fundación y más". History-Computer . 2021-11-14 . Consultado el 2022-09-01 .
  25. ^ abc Loli-Queru, Eugenia (29 de abril de 2002). "Bell Labs lanza nueva versión de Plan 9". OSNews . Consultado el 31 de diciembre de 2011 .
  26. ^ "Cómo contribuir". Bell Labs . Lucent Technologies . Consultado el 30 de noviembre de 2011 .
  27. ^ "Mantenerse actualizado". Bell Labs . Lucent Technologies . Consultado el 24 de julio de 2019 .
  28. ^ "Plan 9 — Software adicional". 2009 . Consultado el 6 de marzo de 2016 .
  29. ^ Weldon, Marcus (23 de marzo de 2021). "Plan 9 de Bell Labs en el ciberespacio". Nokia Bell Labs . Consultado el 23 de marzo de 2021 .
  30. ^ Sharwood, Simon. "Bell Labs transfiere los derechos de autor del influyente sistema operativo 'Plan 9' a una nueva fundación". The Register . Consultado el 24 de marzo de 2021 .
  31. ^ "Preguntas frecuentes 1: Introducción a 9front". fqa.9front.org . Consultado el 15 de febrero de 2018 .
  32. ^ Probado, Liam. "Se lanzó una nueva versión de la bifurcación 9front de Plan 9". The Register . Consultado el 5 de noviembre de 2022 .
  33. ^ "Harvey OS". harvey-os.org . Consultado el 15 de febrero de 2018 .
  34. ^ "Jehanne". jehanne.h--k.it/ . Consultado el 8 de enero de 2023 .
  35. ^ "Anuncio del primer lanzamiento al público en general". 9 fans. 16 de julio de 1995. Archivado desde el original el 6 de julio de 2008.
  36. ^ ab Mullender, Sape J.; Jansen, Pierre G. (26 de febrero de 2004). "Tiempo real en un sistema operativo real". En Herbert, Andrew J.; Spärck Jones, Karen (eds.). Sistemas informáticos: teoría, tecnología y aplicaciones: un homenaje a Roger Needham . Springer Science+Business Media . pág. 211. ISBN 978-0-387-20170-2. Recuperado el 24 de diciembre de 2011 .
  37. ^ Hancock, Brian (2003). "Reinventando Unix: una introducción al sistema operativo Plan 9". Biblioteca Hi Tech . 21 (4). MCB UP: 471–76. doi :10.1108/07378830310509772.
  38. ^ abcde Presotto, Dave; Pike, Rob ; Thompson, Ken ; Trickey, Howard. Plan 9, un sistema distribuido . Proc. Conferencia EurOpen de primavera de 1991. CiteSeerX 10.1.1.41.9192 . 
  39. ^ abc Pike, R. ; Presotto, D.; Thompson, K. ; Trickey, H.; Winterbottom, P. "El uso de espacios de nombres en Plan 9". Bell Labs . Consultado el 26 de febrero de 2016 .
  40. ^ ab Welch, Brent (1994). "Una comparación de tres arquitecturas de sistemas de archivos distribuidos: Vnode, Sprite y Plan 9". Sistemas informáticos . 7 (2): 175–199. CiteSeerX 10.1.1.46.2817 . 
  41. ^ namespace(4)  – Manual del programador de Plan 9, volumen 1
  42. ^ abcdef Pereira, Uriel M. (2006). El espíritu de Unix liberado: Plan 9 de Bell Labs ( AVI ) . FOSDEM . Consultado el 2 de diciembre de 2011 .
    • Uriel. "El espíritu de Unix liberado: Plan 9 de Bell Labs" (PDF) . Bell Labs . Archivado desde el original (PDF) el 2007-11-28 . Consultado el 2007-11-14 .
  43. ^ ab Minnich, Ron (2005). "Por qué el Plan 9 aún no ha muerto y qué podemos aprender de él" (PDF) . Laboratorio Nacional de Los Álamos . Archivado desde el original (PDF) el 25 de febrero de 2016. Consultado el 26 de febrero de 2016 .
  44. ^ ab Valerie, Aurora (25 de marzo de 2009). "Sistemas de archivos de unión: Implementaciones, parte I". LWN.net . Consultado el 5 de diciembre de 2011 .
  45. ^ ab Pendry, Jan-Simon; McKusick, Marshall Kirk (1995). Montajes de unión en 4.4BSD-Lite. Proc. Conferencia de invierno de USENIX .
  46. ^ Duff, Tom. "18". Rc — El Plan 9 Shell. {{cite book}}: |work=ignorado ( ayuda ) (PDF);
  47. ^ ab "Traducción de comandos de UNIX a Plan 9". Bell Labs . Lucent Technologies . Consultado el 2 de diciembre de 2011 .
  48. ^ Pike, Rob (30 de abril de 2003). "Historia de UTF-8" . Consultado el 27 de abril de 2006 .
  49. ^ Lunde, Ken (enero de 1999). Procesamiento de información CJKV . Medios O'Reilly . pag. 466.ISBN 978-1-56592-224-2. Recuperado el 23 de diciembre de 2011 .
  50. ^ Cox, R.; Grosse, E.; Pike, R .; Presotto, D.; Quinlan, S. "Seguridad en Plan 9". Bell Labs . Lucent Technologies . Consultado el 26 de febrero de 2016 .
  51. ^ abc Hudson, Andrew (19 de julio de 2006). "Investigación del sistema operativo Plan 9". OSNews . Consultado el 31 de diciembre de 2011 .
  52. ^ ab "Una entrevista con Russ Cox". The Setup . Utiliza este. 2011-04-09. Archivado desde el original el 2011-12-28 . Consultado el 2012-01-01 .
  53. ^ Dixon, Rod (2004). Ley de software de código abierto. Artech House . p. 213. ISBN 978-1-58053-719-3. Recuperado el 25 de diciembre de 2011 .
  54. ^ Thompson, Ken (febrero de 1992). "Un nuevo compilador de C" (PDF) . Boletín del grupo de usuarios de sistemas UNIX de Australia . 13 (1). Kensington , AU : AUUG : 31–41. ISSN  1035-7521 . Consultado el 25 de diciembre de 2011 .
  55. ^ Pike, Rob. "Rio: Diseño de un sistema de ventanas concurrentes" (PDF) . Consultado el 8 de marzo de 2013 .
  56. ^ thread(2)  – Manual del programador de Plan 9, volumen 1
  57. ^ Trickey, Howard. "APE – El entorno ANSI/POSIX". Bell Labs . Lucent Technologies . Consultado el 26 de febrero de 2016 .
  58. ^ "Emulación de Linux". Bell Labs . Lucent Technologies . Consultado el 26 de febrero de 2016 .
  59. ^ Ford, Bryan; Cox, Russ (2008). Vx32: Sandboxing ligero a nivel de usuario en x86. Conferencia técnica anual de USENIX , págs. 293–306. CiteSeerX 10.1.1.212.9353 . 
  60. ^ Roscoe, Timothy (1995). La estructura de un sistema operativo multiservicio (PDF) (Ph.D.). Universidad de Cambridge. pp. 22–23.
  61. ^ ab Mirtchovski, Andrey; Simmonds, Rob; Minnich, Ron (2004). Plan 9: un enfoque integrado para la computación en cuadrícula . Proc. 18.° Simposio internacional sobre procesamiento paralelo y distribuido. IEEE. CiteSeerX 10.1.1.97.122 . 
  62. ^ ab "window manager improved 2". suckless.org . Archivado desde el original el 2011-12-31 . Consultado el 2012-01-02 . [wmii] tiene una interfaz de sistema de archivos 9p y admite la gestión de ventanas clásica y en mosaico (similar a acme).
  63. ^ Torvalds, Linus (1999). "El borde de Linux" . Códigos abiertos: voces de la revolución del código abierto . O'Reilly. ISBN 1-56592-582-3.
  64. ^ "Glendix: Llevando la belleza de Plan 9 a Linux" . Consultado el 1 de diciembre de 2011 .
  65. ^ "Plan 9 de Gentoo: Plan 9 se encuentra con Gentoo". Gentoo Linux . Archivado desde el original el 2012-12-20 . Consultado el 2011-12-01 .
  66. ^ "El administrador de ventanas 9wm". 9wm . Consultado el 2 de enero de 2012. 9wm es un administrador de ventanas X que intenta emular el administrador de ventanas Plan 9 8-1/2 en la medida de lo posible dentro de las limitaciones impuestas por X.
  67. ^ "9grid". Bell Labs . Lucent Technologies . Archivado desde el original el 14 de marzo de 2006. Consultado el 28 de marzo de 2006 .
  68. ^ Ballesteros, Francisco J.; Guardiola, Gorka; Soriano, Enrique; Leal Algara, Katia (2005). Los sistemas tradicionales pueden funcionar bien para aplicaciones generalizadas. Un caso de estudio: Plan 9 de Bell Labs se vuelve omnipresente . Conferencia internacional IEEE sobre computación y comunicaciones generalizadas. CiteSeerX 10.1.1.109.8131 . 
  69. ^ "Vita Nuova suministra Inferno Grid a Evotec OAI" (PDF) (Presione soltar). Vita Nueva . 2004-05-18 . Consultado el 28 de marzo de 2006 .
  70. ^ "Las bibliotecas de la Universidad Rutgers instalan Inferno Data Grid" (PDF) (Nota de prensa). Vita Nuova . 2004-05-12 . Consultado el 2006-03-28 .
  71. ^ "El Departamento de Biología de la Universidad de York instala el Inferno Data Grid de Vita Nuova" (PDF) (Nota de prensa). Vita Nuova . 2004-05-04 . Consultado el 2006-03-28 .
  72. ^ "9FRONT.ORG EL PLAN SE FUERA A CAER" . Consultado el 14 de octubre de 2021 .
  73. ^ Hayward, David (9 de mayo de 2013). «Sistemas operativos Raspberry Pi: 5 reseñados y calificados». TechRadar . Archivado desde el original el 7 de junio de 2013. Consultado el 20 de abril de 2014 .
  74. ^ "Cómo instalar Plan 9 en una Raspberry Pi". eLinux . Consultado el 16 de noviembre de 2014 .
  75. ^ Jurado, Álvaro; Fernández, Rafael; du Colombier, David; Minnich, Ron; Nyrhinen, Aki; Florén, Juan. Harvey (PDF) . Sesión USENIX ATC BOF.
  76. ^ "¿Qué novedades hay para WSL en Windows 10 versión 1903?". Herramientas de línea de comandos de Windows para desarrolladores . 16 de febrero de 2019.
  77. ^ "9atom". Archivado desde el original el 11 de noviembre de 2020.{{cite web}}: CS1 maint: URL no apta ( enlace )
  78. ^ "9atom". quanstro.net . Archivado desde el original el 9 de junio de 2018 . Consultado el 15 de junio de 2023 .
  79. ^ "9atom". ArchiveOS . 3 de mayo de 2022 . Consultado el 15 de junio de 2023 .
  80. ^ "9FRONT.ORG EL PLAN FALLÓ". 9front.org .
  81. ^ "9legado". www.9legacy.org .
  82. ^ "Akaros". akaros.org .
  83. ^ "Sistema operativo Harvey". harvey-os.org .
  84. ^ "JehanneOS". 17 de noviembre de 2021.
  85. ^ "NIX". 21 de noviembre de 2020.
  86. ^ "node9". GitHub . 14 de enero de 2022.
  87. ^ "Plan B". 26 de noviembre de 2020.
  88. ^ "Descargar". Wiki de Plan 9. 9p.io. Consultado el 15 de junio de 2023 .
  89. ^ Ballesteros, Francisco J.; Múzquiz, Gorka Guardiola; Algara, Katia Leal; Soriano, Enrique; de las Heras Quirós, Pedro; Castro, Eva M.; Leonardo, Andrés; Arévalo, Sergio (febrero de 2004). "Plan B: Cajas para recursos en red". Revista de la Sociedad Brasileña de Computación . 10 (1): 33–44. doi : 10.1007/BF03192352 . S2CID  6766935.
  90. ^ Ballesteros, FJ; Soriano, E.; Leal, K.; Guardiola, G. (2006). "Plan B: Un sistema operativo para entornos de computación ubicua". Cuarta Conferencia Anual Internacional IEEE sobre Computación Pervasiva y Comunicaciones (PERCOM'06) . pp. 126–135. doi :10.1109/PERCOM.2006.43. ISBN 0-7695-2518-0. S2CID  1730651 . Consultado el 15 de junio de 2023 .
  91. ^ Sharwood, Simon (14 de febrero de 2014). "Plan 9 se muda del espacio de licencia de Lucent". TheRegister . Consultado el 20 de abril de 2014 .
  92. ^ "Plan9 Foundation". plan9foundation.org . Consultado el 13 de octubre de 2021 .
  • 9p.io: espejo archivado del sitio web oficial original de Plan 9 en plan9.bell-labs.com Archivado el 24 de mayo de 2021 en Wayback Machine
  • 9fans: lista de correo semioficial para usuarios y desarrolladores de Plan 9
  • Fundación Plan 9
Obtenido de "https://es.wikipedia.org/w/index.php?title=Plan_9_de_Bell_Labs&oldid=1252258432"