Plan 9 de Bell Labs es un sistema operativo diseñado por el Centro de Investigación en Ciencias de la Computación (CSRC) de Bell Labs a mediados de la década de 1980, basado en los conceptos de UNIX desarrollados allí a finales de la década de 1960. Desde el año 2000, Plan 9 es gratuito y de código abierto . Su última versión oficial se lanzó a principios de 2015.
Bajo el Plan 9, la metáfora de UNIX de que todo es un archivo se extiende mediante un sistema de archivos distribuido (centrado en la red ) omnipresente, y la E/S basada en terminal y direccionada por cursor , que constituye el núcleo de UNIX , se reemplaza por un sistema de ventanas y una interfaz gráfica de usuario sin direccionamiento por cursor (aunque rc , el intérprete de comandos del Plan 9 , está basado en texto). El Plan 9 también introdujo la seguridad basada en capacidades y un sistema de archivos estructurado en registros llamado Fossil que proporciona instantáneas e historiales de archivos versionados.
El nombre Plan 9 de Bell Labs es una referencia a la película de culto de ciencia ficción de serie B de Ed Wood de 1957 , Plan 9 del espacio exterior . [ 17 ] El sistema continúa siendo utilizado y desarrollado por investigadores y aficionados a los sistemas operativos. [ 18 ] [ 19 ]
Historia

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 destacados 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, especialmente en entornos distribuidos multiusuario . Tras varios años de desarrollo y uso interno, Bell Labs distribuyó el sistema operativo a universidades en 1992. Tres años después, AT&T puso Plan 9 a disposición de empresas comerciales a través de la editorial Harcourt Brace . Con licencias de código fuente a un precio de 350 dólares, AT&T se dirigió al mercado de sistemas embebidos en lugar del mercado informático en general. Ritchie comentó que los desarrolladores no esperaban lograr un gran desplazamiento, dado el grado de consolidación de otros sistemas operativos. [ 23 ]
A principios de 1996, AT&T había relegado el proyecto Plan 9 a un segundo plano en favor de Inferno , concebido como un rival para la plataforma Java de Sun Microsystems . [ 24 ] A finales de la década de 1990, Lucent Technologies , nuevo propietario de Bell Labs, dejó de ofrecer soporte comercial para el proyecto y, en 2000, se distribuyó una tercera versión bajo una licencia de código abierto . [ 25 ] En 2002 se lanzó una cuarta versión bajo una nueva licencia de software libre . [ 26 ] A principios de 2015, se realizó el lanzamiento oficial final de Plan 9. [ 25 ]
Una comunidad de usuarios y desarrolladores, que incluía personal actual y antiguo de Bell Labs , producía versiones menores diarias en forma de imágenes ISO . Bell Labs alojaba 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 sistema operativo incluidos en las ISO, Bell Labs también aloja un repositorio de aplicaciones y herramientas desarrolladas externamente. [ 29 ]
A medida que Bell Labs se ha centrado en 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 la Fundación Plan 9. [ 10 ] [ 30 ] [ 31 ] Geoff Collyer, un mantenedor de Plan 9, publicó su trabajo en Plan 9 en su página web personal , que incluye el kernel 9k de 64 bits y una versión para RISC-V. El desarrollo no oficial del sistema también continúa en la bifurcación 9front, donde los colaboradores activos proporcionan compilaciones mensuales y nuevas funcionalidades. Hasta ahora, la bifurcación 9front ha proporcionado al sistema controladores Wi-Fi , controladores de audio, compatibilidad con USB y un 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 ]
Conceptos de diseño
El Plan 9 de Bell Labs es similar a los cuáqueros : se distingue por su énfasis en la "Luz Interior" y por su sencillez de vida, en particular por su franqueza. Al igual que los cuáqueros, el Plan 9 no hace proselitismo.
Plan 9 es un sistema operativo distribuido , diseñado para que una red de computadoras heterogéneas y geográficamente separadas funcione como un único 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 gestionan procesos de computación intensiva. El almacenamiento permanente de datos lo proporcionan hosts de red adicionales que actúan como servidores de archivos y almacenamiento de archivo. [ 39 ]
Sus diseñadores afirman que,
Los fundamentos 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 et al. [ 40 ]
La primera idea (un espacio de nombres por proceso) implica que, a diferencia de la mayoría de los sistemas operativos, cada proceso (programa en ejecución) tiene su propia vista del espacio de nombres , que corresponde a lo que otros sistemas operativos denominan sistema de archivos; una misma ruta puede referirse a diferentes recursos para distintos procesos. La complejidad potencial de esta configuración se controla mediante un conjunto de ubicaciones convencionales para recursos comunes. [ 41 ] [ 42 ]
La segunda idea (un sistema de archivos orientado a mensajes) implica 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 forma, el Plan 9 generaliza la noción de Unix del sistema de archivos como punto central de acceso a los recursos informáticos. Conserva la idea de Unix de los archivos de dispositivo para proporcionar acceso a dispositivos periféricos ( ratones , medios extraíbles, etc.) y la posibilidad de montar sistemas de archivos ubicados en sistemas de archivos físicamente distintos en un espacio de nombres jerárquico, pero añade la posibilidad de montar una conexión a un programa servidor que utiliza un protocolo estandarizado y tratar sus servicios como parte del espacio de nombres.
Por ejemplo, el sistema de ventanas original, llamado 8½, explotaba estas posibilidades de la siguiente manera. El Plan 9 representa la interfaz de usuario en una terminal a través 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 ejecuta 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 adecuadamente, enviando la salida al dispositivo de pantalla real y dando al programa actualmente enfocado la entrada del teclado y el 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; Solo tiene que asumir que su espacio de nombres está configurado de manera que estos archivos especiales proporcionen el tipo de entrada y acepten el tipo de mensajes que espera.
El funcionamiento distribuido del Plan 9 también se basa en los espacios de nombres por proceso, lo que permite que los procesos cliente y servidor se comuniquen entre máquinas de la forma descrita anteriormente. 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 del terminal del usuario ( mouse , cons , bitblt ), al servidor, de modo que los programas remotos puedan realizar operaciones de entrada/salida utilizando el ratón, el teclado y la pantalla del 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 utilizan 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 permite la transmisión de mensajes entre un servidor y un cliente. [ 43 ] El protocolo se utiliza para referirse a procesos, programas y datos, y comunicarse con ellos, incluyendo tanto la interfaz de usuario como la red. [ 44 ] Con el lanzamiento de la cuarta edición, se modificó y se renombró como 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 sockets Berkeley , recursos X o 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 puede acceder al hardware mediante las operaciones de entrada/salida de archivos habituales (lectura y escritura) . En consecuencia, se puede compartir el dispositivo a través de la red montando el árbol de directorios correspondiente en la máquina de destino. [ 17 ]
Directorios y espacios de nombres de la unión
El Plan 9 permite al usuario recopilar los archivos (llamados nombres ) de diferentes árboles de directorios en una única ubicación. El directorio 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 con el mismo nombre, un listado del directorio resultante ( ls o lc ) simplemente informará 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/nombre denota top/nombre si existe, bottom/nombre solo si existe y top/nombre 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 utilizando una secuencia de comandos de enlace :
enlazar /arm/bin /bin bind -a /acme/bin/arm /bin bind -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 después de /bin , y el directorio bin personal de Alice se monta antes. Cuando se solicita un archivo de /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 suelen reemplazar la noción de una ruta de búsqueda en el shell. Una variable de entorno de ruta ( $path) todavía existe en el shell rc (el shell utilizado principalmente en Plan 9); sin embargo, la variable de entorno de ruta de rc convencionalmente solo contiene los /bindirectorios .y y se desaconseja modificar la variable, en su lugar, se deben agregar comandos adicionales vinculando varios directorios como un solo /bin. [ 47 ] [ 39 ] A diferencia de Plan 9, la variable de entorno de ruta de los shells de 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 así proporcionar a cada proceso su propio espacio de nombres del 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 tienen espacios de nombres heterogéneos. [ 40 ] Los espacios de nombres se pueden usar 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 función de montaje de unión de BSD consideraron que la fusión no recursiva de directorios en Plan 9 era "demasiado restrictiva para un uso general". [ 46 ]
Sistema de archivos virtual especial
/proc

En lugar de tener llamadas al sistema específicas para la gestión de procesos , Plan 9 proporciona el sistema de archivos /proc . Cada proceso aparece como un directorio que contiene archivos de información y control que pueden ser manipulados por las llamadas al 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 simples de administración de archivos como ls y cat ; sin embargo, los procesos no se pueden copiar ni mover como archivos. [ 8 ]
/neto
El Plan 9 no dispone de llamadas al sistema ni ioctls especializados 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 archivos de control. 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 de Plan 9. Todo el sistema se convirtió a uso general en 1992. [ 49 ] UTF-8 conserva la compatibilidad con versiones anteriores de cadenas terminadas en nulo tradicionales , lo que permite un procesamiento de información más fiable 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, los conceptos de diseño del Plan 9 estaban pensados para ser 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 de una puerta de enlace remota , utilizando 9P seguro sobre Internet pública. Un directorio de unión con la jerarquía /net y filtros se puede utilizar para aislar una aplicación no confiable o para implementar un cortafuegos . [ 43 ] De la misma manera, se puede componer una red de computación distribuida con un directorio de unión de jerarquías /proc de hosts remotos, lo que permite interactuar con ellos como si fueran locales.
Cuando se utilizan conjuntamente, estas características permiten ensamblar un entorno de computación distribuida complejo mediante la reutilización del sistema de nombres jerárquico existente. [ 8 ]
Software para Plan 9
Como ventaja derivada 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 intérprete de comandos rc (el intérprete de comandos predeterminado de Plan 9).
Factotum es un servidor de autenticación y gestión de claves para Plan 9. Gestiona la autenticación en nombre de otros programas, de modo que tanto las claves secretas como los detalles de implementación solo necesitan ser conocidos por Factotum. [ 51 ]
Programas gráficos

A diferencia de Unix , Plan 9 fue diseñado teniendo en cuenta los gráficos. [ 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 creación de hipervínculos en todo el sistema.
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 almacenamiento de instantáneas. Puede utilizarse directamente con un disco duro o con Venti , un sistema de archivos de archivo y almacenamiento permanente de datos.
Desarrollo de software
El paquete de distribución de Plan 9 incluye variantes de compilador y lenguajes de programación especiales, y proporciona un conjunto de bibliotecas adaptadas junto con un sistema de interfaz de usuario de ventanas específico para Plan 9. [ 54 ] La mayor parte del sistema está escrita en un dialecto de C ( ANSI C con algunas extensiones y otras características omitidas). Los compiladores para este lenguaje se crearon a medida teniendo en cuenta 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 se eliminó por razones de mantenimiento y se reemplazó 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 emular la interfaz de sockets 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 dos estándares). También incluye un intérprete de comandos compatible con POSIX. Los autores de APE afirman haberlo utilizado para portar el Sistema X Window (X11) a Plan 9, aunque no distribuyen X11 "porque soportarlo correctamente es un trabajo demasiado grande". [ 58 ] Algunos binarios de Linux se pueden usar con la ayuda de una aplicación "linuxemu" (emulador de Linux); sin embargo, todavía está en desarrollo. [ 59 ] A la inversa, la máquina virtual Vx32 permite que un kernel de Plan 9 ligeramente modificado se ejecute como un proceso de usuario en Linux, soportando programas de Plan 9 sin modificar. [ 60 ]
Recepción
Comparación con 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, demostrando que el código fuente de una versión mínima ("funcional, aunque no muy útil") era menos de una quinta parte del tamaño de un microkernel Mach sin controladores de dispositivos (5899 o 4622 líneas de código para Plan 9, según la métrica, frente a 25530 líneas). El kernel completo constaba de 18000 líneas de código. [ 39 ] (Según un recuento de 2006, el kernel 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 realizaron otros intentos para lograr la computación distribuida y el 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, ya que no admite el acceso remoto a dispositivos ni la comunicación remota entre procesos de forma limpia, aunque podría haberlo hecho si los sockets de dominio UNIX preexistentes (que "se pueden usar esencialmente para nombrar servidores de nivel de usuario") se hubieran integrado con la arquitectura vnode. [ 41 ]
Una crítica al diseño de Plan 9, donde "todo es un archivo" y la comunicación mediante mensajes de texto, señaló las limitaciones de este paradigma en comparación con las interfaces tipadas del sistema operativo orientado a objetos de Sun , Spring :
El Plan 9 restringe todo para que 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 desde un descriptor de archivo. Esto es difícil de especificar y documentar, y prohíbe cualquier verificación automática de tipos , excepto para errores de archivo en tiempo de ejecución. (...) [Un] nombre de ruta relativo al contexto raíz implícito de un proceso es la única forma de nombrar un servicio. Vincular un nombre a un objeto solo puede hacerse dando un nombre existente para el objeto, en el mismo contexto que el nuevo nombre. Por lo tanto, las referencias de interfaz simplemente no pueden pasarse entre procesos, y mucho menos a través de redes. En cambio, la comunicación tiene que basarse en convenciones, que son propensas a errores y no son 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 integrados en el sistema operativo, lo que dificulta la comunicación con servicios externos. Estos sistemas sufren las consecuencias de su radical alejamiento del modelo UNIX, lo que también dificulta la portabilidad del software ya existente a la plataforma (...). La falta de desarrolladores, la escasa compatibilidad con hardware y la reducida base de usuarios, incluso en comparación con Plan 9, también han ralentizado significativamente la adopción de estos sistemas (...). En retrospectiva, Plan 9 fue el único sistema operativo distribuido de investigación de aquella época que logró atraer desarrolladores y ser utilizado en proyectos comerciales durante el tiempo suficiente como para garantizar su supervivencia hasta nuestros días.
— Mirtchovski, Simmonds y Minnich [ 62 ]
Impacto

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, incluyendo acme y su predecesor sam , 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 el núcleo de Linux con los programas del sistema operativo Plan 9. [ 65 ] [ 66 ] El gestor de ventanas 9wm se inspiró en 8½ , el sistema de ventanas anterior de Plan 9; [ 67 ] wmii también está fuertemente influenciado por Plan 9. [ 63 ] En la investigación en ciencias de la computación, Plan 9 se ha utilizado como plataforma de computación en malla [ 68 ] [ 62 ] y como vehículo para la investigación en 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 el Plan 9 fracasó simplemente porque no logró ser una mejora lo suficientemente convincente para Unix como para desbancar a su predecesor. Comparado con el Plan 9, Unix presenta fallos y evidentes deficiencias, pero cumple su función lo suficientemente bien como para mantener su posición. Esto deja una lección para los arquitectos de sistemas ambiciosos: el enemigo más peligroso de una mejor solución es un código base existente que simplemente cumple con lo mínimo.
— Eric S. Raymond [ 17 ]
Otros factores que contribuyeron a la baja adopción del Plan 9 incluyen la falta de respaldo comercial, el bajo número de aplicaciones para usuarios finales y la falta de controladores de dispositivos . [ 52 ] [ 53 ]
Los defensores 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. Inferno , gracias a sus capacidades de alojamiento, ha servido como vehículo para llevar las tecnologías de Plan 9 a otros sistemas como parte alojada de redes de computación heterogéneas. [ 70 ] [ 71 ] [ 72 ]
Varios proyectos trabajan para extender Plan 9, incluyendo 9atom y 9front. Estas bifurcaciones amplían 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 para el sistema de control de versiones Mercurial (y ahora también una implementación de git), y otros programas. [ 19 ] [ 73 ] Plan 9 fue portado a la computadora de placa única Raspberry Pi . [ 74 ] [ 75 ] El proyecto Harvey, descontinuado, intenta reemplazar el compilador C personalizado de Plan 9 con GCC , para aprovechar 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 Windows anfitrión actúa como cliente. [ 77 ]
Derivados y bifurcaciones
- Inferno es descendiente de Plan 9 y comparte muchos conceptos de diseño e incluso código fuente en el núcleo, especialmente en lo que respecta a 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 de Inferno eran herramientas de Plan 9 que se adaptaron a Limbo .
- 9atom [ 78 ] amplía la distribución Plan 9 con la adición de un kernel 386 PAE , un kernel de CPU y terminal amd64, nupas, soporte adicional para hardware de PC, IL y el fs de Ken. [ 79 ] [ 80 ] Su página principal no se ha actualizado desde 2013 y se sabe muy poco sobre su desarrollo o comunidad.
- 9front [ 81 ] es una bifurcación de Plan 9. Se inició para remediar una supuesta falta de recursos de desarrollo dedicados dentro de Bell Labs, y ha acumulado varias correcciones y mejoras.
- 9legacy [ 82 ] es una distribución alternativa. Incluye un conjunto de parches basados en la distribución actual de Plan 9.
- Akaros [ 83 ] está diseñado para arquitecturas de muchos núcleos y sistemas SMP a gran escala.
- Harvey OS [ 84 ] (descontinuado) es un esfuerzo por hacer que el código de 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 de 64 bits 9k.
- NIX [ 86 ] es una bifurcación de Plan9 destinada a sistemas multinúcleo y computación en la nube.
- node9 [ 87 ] es una versión basada en scripts 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 alojada por plataforma de Inferno con la gestión de eventos y E/S de libuv de Node.js para un alojamiento 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 genéricos de la nube para construir una imagen de sistema único de tamaño arbitrario.
- Plan B [ 88 ] 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 la tercera edición de Plan 9, Plan B se trasladó al espacio de usuario para ejecutarse en los sistemas Plan 9 actuales. [ 89 ] [ 90 ] [ 91 ]
- R9 [ 92 ] es una reimplementación del núcleo Plan 9 en Rust (aunque no existe una adaptación del compilador del lenguaje de programación Rust a Plan 9).
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 es considerada 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 , fue autorizada por el actual titular de los derechos de autor de Plan 9 , Alcatel-Lucent , a liberar todo el software de Plan 9 previamente regido por la Licencia Pública de Lucent, versión 1.02, bajo la GPL-2.0-only . [ 93 ]
El 23 de marzo de 2021, la propiedad de Plan 9 se transfirió de Bell Labs a la Fundación Plan 9, [ 94 ] y todas las versiones anteriores se han vuelto a licenciar bajo la Licencia MIT . [ 10 ]
Véase también
Referencias
- ↑ "Plan 9 de Bell Labs" .
- ↑ Lucent Technologies (2006). "Glenda, la conejita del Plan 9" . Recuperado el 2 de diciembre de 2008 .
- ↑ "Plan 9 Foundation: Actividades" . plan9foundation.org . Consultado el 23 de marzo de 2021 .
- ↑ "9legacy" . 9legacy.org . Consultado el 23 de marzo de 2021 .
- ↑ "plan9checksums" . Bell Labs. Archivado del original el 1 de junio de 2017. Consultado el 25 de julio de 2019.
Sábado 10 de enero de 2015, 04:04:55 EST... plan9.iso.bz2
- ↑ "Código fuente GPLv2" .
- ↑ Crawford, Diane (1999). "Foro". Communications of the ACM . 42 (8). Association for Computing Machinery (ACM): 11– 15. doi : 10.1145/310930.310939 . ISSN 0001-0782 . S2CID 263897745 .
- 1 2 3 4 5 Pike, R. ; Presotto, D.; Dorward, S.; Flandrena, B.; Thompson, K. ; Trickey, H.; Winterbottom, P. "Plan 9 de Bell Labs" . Bell Labs . Lucent Technologies . Recuperado el 26 de febrero de 2016 .
- ↑ "Licencia Plan 9" . p9f.org . Archivado del original el 14 de junio de 2021. Consultado el 14 de junio de 2021 .
- 1 2 3 Sorace, Anthony. "Transferencia del Plan 9 a la Fundación Plan 9" . marc.info . Archivado del original el 13 de abril de 2021. Recuperado el 14 de abril de 2020 .
- ↑ "Plan9License" . akaros.cs.berkeley.edu . Archivado del original el 13 de febrero de 2014. Recuperado el 14 de junio de 2021. La Universidad de California, Berkeley ,
ha sido autorizada por Alcatel-Lucent para liberar todo el software Plan 9 previamente regido por la Licencia Pública de Lucent, versión 1.02, bajo la Licencia Pública General de GNU, versión 2.
- ↑ "Licencia pública de Lucent, versión 1.02" . plan9.bell-labs.com . Archivado del original el 3 de octubre de 2003. Consultado el 14 de junio de 2021 .
- ↑ "Licencia de código abierto de Plan 9 - Versión 1.4 - 09/10/02" . plan9.bell-labs.com . Archivado del original el 18 de diciembre de 2002. Consultado el 14 de junio de 2021 .
- ↑ "Licencia de código abierto de Plan 9 - Versión 1.2 - 29/10/00" . plan9.bell-labs.com . Archivado del original el 6 de diciembre de 2000. Consultado el 14 de junio de 2021 .
- ↑ "Licencia de código abierto de Plan 9 - Versión 1.1 - 20/09/00" . plan9.bell-labs.com . Archivado del original el 26 de octubre de 2000. Consultado el 14 de junio de 2021 .
- ↑ "Acuerdo de licencia de código abierto de Plan 9" . plan9.bell-labs.com . Archivado del original el 16 de agosto de 2000. Consultado el 14 de junio de 2021 .
- 1 2 3 Raymond, Eric S. (17 de septiembre de 2003). "Plan 9: El futuro era como era" . El arte de la programación UNIX . Addison-Wesley . ISBN 0-13-142901-9. Consultado el 7 de mayo de 2007 .
- ↑ Robertson, James (16 de julio de 2011). "El Plan 9 se bifurcó y continúa como 9front" . OSNews . Recuperado el 31 de diciembre de 2011 .
- 1 2 3 "9atom" . Archivado del original el 26-07-2013 . Recuperado el 11-11-2011 .
- ↑ "De los inventores del sistema UNIX llega el Plan 9 de Bell Labs" (Comunicado de prensa). Lucent Technologies. 18 de julio de 1995.
{{cite press release}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ McIlroy, Doug (marzo de 1995). "Prefacio" . Bell Labs (2.ª ed.). Lucent Technologies . Recuperado el 26 de febrero de 2016 .
- ↑ 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 .
- ↑ Lee, Yvonne L. (24 de julio de 1995). "AT&T Bell Labs lanza el sistema operativo Plan 9 para sistemas embebidos" . InfoWorld .
- ↑ Pontin, Jason (19 de febrero de 1996). "AT&T revela planes para un competidor de Java" . InfoWorld . pág. 3.
- 1 2 Heather (14 de noviembre de 2021). "Bell Labs: Una guía completa: historia, productos, fundación y más" . History-Computer . Recuperado el 1 de septiembre de 2022 .
- 1 2 3 Loli-Queru, Eugenia (2002-04-29). "Bell Labs lanza una nueva versión del Plan 9" . OSNews . Recuperado el 31 de diciembre de 2011 .
- ↑ "Cómo contribuir" . Bell Labs . Lucent Technologies . Consultado el 30 de noviembre de 2011 .
- ↑ "Mantenerse actualizado" . Bell Labs . Lucent Technologies . Consultado el 24 de julio de 2019 .
- ↑ "Plan 9 — Software adicional" . 2009. Consultado el 6 de marzo de 2016 .
- ↑ 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 .
- ↑ 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 .
- ↑ "FQA 1 - Introducción a 9front" . fqa.9front.org . Consultado el 15 de febrero de 2018 .
- ↑ Proven, Liam. "Nueva versión de Plan 9 fork 9front lanzada" . The Register . Consultado el 5 de noviembre de 2022 .
- ↑ "Harvey OS" . harvey-os.org . Consultado el 15 de febrero de 2018 .
- ↑ «Jehanne» . jehanne.h--k.it/ . Consultado el 8 de enero de 2023 .
- ↑ "Anuncio del primer lanzamiento al público general" . 9 fans. 16 de julio de 1995. Archivado del original el 6 de julio de 2008.
- 1 2 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. Consultado el 24 de diciembre de 2011 .
- ↑ Hancock, Brian (2003). "Reinventando Unix: una introducción al sistema operativo Plan 9". Library Hi Tech . 21 (4). MCB UP: 471– 76. doi : 10.1108/07378830310509772 .
- 1 2 3 4 5 Presotto, Dave; Pike, Rob ; Thompson, Ken ; Trickey, Howard. Plan 9, un sistema distribuido . Actas de la Conferencia EurOpen de primavera de 1991. CiteSeerX 10.1.1.41.9192 .
- 1 2 3 Pike, R. ; Presotto, D.; Thompson, K. ; Trickey, H.; Winterbottom, P. "El uso de espacios de nombres en Plan 9" . Bell Labs . Recuperado el 26 de febrero de 2016 .
- 1 2 Welch, Brent (1994). "Una comparación de tres arquitecturas de sistemas de archivos distribuidos: Vnode, Sprite y Plan 9". Computing Systems . 7 (2): 175– 199. CiteSeerX 10.1.1.46.2817 .
- ↑ – Manual del programador de Plan 9 , Volumen 1
- 1 2 3 4 5 6 Pereira, Uriel M. (2006). El espíritu Unix liberado: Plan 9 de Bell Labs ( AVI ) . FOSDEM . Recuperado el 2 de diciembre de 2011 .
- Uriel. "El espíritu de Unix liberado: Plan 9 de Bell Labs" (PDF) . Bell Labs . Archivado del original (PDF) el 28 de noviembre de 2007. Consultado el 14 de noviembre de 2007 .
- 1 2 Minnich, Ron (2005). "Por qué el Plan 9 aún no ha muerto y qué podemos aprender de él" (PDF) . Laboratorio Nacional de Los Alamos . Archivado del original (PDF) el 25 de febrero de 2016. Recuperado el 26 de febrero de 2016 .
- 1 2 Valerie, Aurora (2009-03-25). "Sistemas de archivos de unión: Implementaciones, parte I" . LWN.net . Recuperado el 2011-12-05 .
- 1 2 Pendry, Jan-Simon; McKusick, Marshall Kirk (1995). Union Mounts en 4.4BSD-Lite . Proc. Winter USENIX Conf.
- ↑ Duff, Tom. "18". Rc — The Plan 9 Shell . Plan 9, 4.ª edición.( PDF );
- 1 2 "Traducción de comandos de UNIX a Plan 9" . Bell Labs . Lucent Technologies . Consultado el 2 de diciembre de 2011 .
- ↑ Pike, Rob (30 de abril de 2003). "Historia de UTF-8" . Recuperado el 27 de abril de 2006 .
- ^ Lunde, Ken (enero de 1999). Procesamiento de información CJKV . Medios O'Reilly . pag. 466 . ISBN 978-1-56592-224-2. Consultado el 23 de diciembre de 2011 .
- ↑ Cox, R.; Grosse, E.; Pike, R. ; Presotto, D.; Quinlan, S. "Seguridad en el Plan 9" . Bell Labs . Lucent Technologies . Recuperado el 26 de febrero de 2016 .
- 1 2 3 Hudson, Andrew (19 de julio de 2006). "Investigando el sistema operativo Plan 9" . OSNews . Recuperado el 31 de diciembre de 2011 .
- 1 2 "Una entrevista con Russ Cox" . The Setup . Utiliza esto. 2011-04-09. Archivado del original el 2011-12-28 . Recuperado el 2012-01-01 .
- ↑ Dixon, Rod (2004). Derecho del software de código abierto . Artech House . pág. 213. ISBN 978-1-58053-719-3. Consultado el 25 de diciembre de 2011 .
- ↑ 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 .
- ↑ Pike, Rob. "Rio: Diseño de un sistema de ventanas concurrentes" (PDF) . Consultado el 8 de marzo de 2013 .
- ↑ – Manual del programador de Plan 9 , Volumen 1
- ↑ Trickey, Howard. "APE – El entorno ANSI/POSIX" . Bell Labs . Lucent Technologies . Consultado el 26 de febrero de 2016 .
- ↑ "Emulación de Linux" . Bell Labs . Lucent Technologies . Consultado el 26 de febrero de 2016 .
- ↑ Ford, Bryan; Cox, Russ (2008). Vx32: Sandboxing ligero a nivel de usuario en x86 . USENIX Annual Tech. Conf. pp. 293–306 . CiteSeerX 10.1.1.212.9353 .
- ↑ Roscoe, Timothy (1995). La estructura de un sistema operativo multiservicio (PDF) (Tesis doctoral). Universidad de Cambridge. págs. 22–23 .
- 1 2 Mirtchovski, Andrey; Simmonds, Rob; Minnich, Ron (2004). Plan 9: un enfoque integrado para la computación en malla . Actas del 18.º Simposio Internacional de Procesamiento Paralelo y Distribuido. IEEE. CiteSeerX 10.1.1.97.122 .
- 1 2 "window manager improved 2" . suckless.org . Archivado del original el 31/12/2011 . Recuperado el 02/01/2012 .
[
wmii
]
tiene una interfaz de sistema de archivos 9p y admite la administración de ventanas clásica y en mosaico (tipo acme).
- ↑ Torvalds, Linus (1999). "The Linux edge" . Open Sources: Voices from the Open Source Revolution . O'Reilly. ISBN 1-56592-582-3.
- ↑ "Glendix: Llevando la belleza del Plan 9 a Linux" . Consultado el 1 de diciembre de 2011 .
- ↑ "Plan 9 de Gentoo: Plan 9 se encuentra con Gentoo" . Gentoo Linux . Consultado el 1 de diciembre de 2011 .
{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace ) - ↑ "El gestor de ventanas 9wm" . 9wm . Consultado el 2 de enero de 2012.
9wm es un gestor de ventanas X que intenta emular el gestor de ventanas Plan 9 8-1/2 en la medida de lo posible dentro de las limitaciones impuestas por X.
- ↑ "9grid" . Bell Labs . Lucent Technologies . Archivado del original el 14 de marzo de 2006. Consultado el 28 de marzo de 2006 .
- ↑ Ballesteros, Francisco J.; Guardiola, Gorka; Soriano, Enrique; Leal Algara, Katia (2005). Los sistemas tradicionales pueden funcionar bien para aplicaciones ubicuas. Un estudio de caso: Plan 9 de Bell Labs se vuelve ubicuo . IEEE Intl' Conf. on Pervasive Computing and Communications. CiteSeerX 10.1.1.109.8131 .
- ^ "Vita Nuova suministra Inferno Grid a Evotec OAI" (PDF) (Presione soltar). Vita Nueva . 2004-05-18 . Consultado el 28 de marzo de 2006 .
- ↑ "Las bibliotecas de la Universidad de Rutgers instalan Inferno Data Grid" (PDF) (Comunicado de prensa). Vita Nuova . 12 de mayo de 2004. Consultado el 28 de marzo de 2006 .
- ↑ "El Departamento de Biología de la Universidad de York instala la red de datos Inferno de Vita Nuova" (PDF) (Comunicado de prensa). Vita Nuova . 4 de mayo de 2004. Consultado el 28 de marzo de 2006 .
- ↑ "9FRONT.ORG EL PLAN FALLÓ" . Consultado el 14 de octubre de 2021 .
- ↑ Hayward, David (09/05/2013). "Sistemas operativos para Raspberry Pi: 5 reseñados y calificados" . TechRadar . Archivado del original el 7 de junio de 2013. Recuperado el 20/04/2014 .
- ↑ "Cómo instalar Plan 9 en una Raspberry Pi" . eLinux . Consultado el 16 de noviembre de 2014 .
- ↑ Jurado, Álvaro; Fernández, Rafael; du Colombier, David; Minnich, Ron; Nyrhinen, Aki; Florén, Juan. Harvey (PDF) . Sesión USENIX ATC BOF.
- ↑ "¿Qué novedades incluye WSL en Windows 10 versión 1903?" . Herramientas de línea de comandos de Windows para desarrolladores . 16 de febrero de 2019.
- ↑ "9atom" . Archivado del original el 11 de noviembre de 2020.
- ↑ "9atom" . quanstro.net . Archivado del original el 9 de junio de 2018. Consultado el 15 de junio de 2023 .
- ↑ "9atom" . ArchiveOS . 3 de mayo de 2022. Consultado el 15 de junio de 2023 .
- ↑ "9FRONT.ORG EL PLAN FALLÓ" . 9front.org .
- ↑ "9legacy" . www.9legacy.org .
- ↑ "Akaros" . akaros.org .
- ↑ "Harvey OS" . harvey-os.org .
- ↑ «JehanneOS» . 17 de noviembre de 2021.
- ↑ "NIX" . 21 de noviembre de 2020.
- ↑ "node9" . GitHub . 14 de enero de 2022.
- ↑ "Plan B" . 26 de noviembre de 2020.
- ↑ "Descargar" . Wiki de Plan 9. 9p.io. Consultado el 15 de junio de 2023 .
- ↑ 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 .
- ↑ Ballesteros, FJ; Soriano, E.; Leal, K.; Guardiola, G. (2006). "Plan B: Un sistema operativo para entornos de computación ubicua" . Cuarta Conferencia Internacional Anual IEEE sobre Computación y Comunicaciones Ubicuas (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 .
- ↑ "r9" en GitHub
- ↑ Sharwood, Simon (14 de febrero de 2014). "El Plan 9 se retira del espacio de licencias de Lucent" . TheRegister . Consultado el 20 de abril de 2014 .
- ↑ "Plan9 Foundation" . plan9foundation.org . Consultado el 13 de octubre de 2021 .
Enlaces externos
- 9p.io : Copia archivada 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 semi-oficial para usuarios y desarrolladores de Plan 9.
- Fundación Plan 9
- Plan 9 de Bell Labs
- Software de 1992
- Sistemas operativos ARM
- Plataformas informáticas
- Arquitectura de computación distribuida
- Sistemas operativos integrados
- Sistemas operativos de software libre
- Distribuciones de sistemas operativos arrancables desde medios de solo lectura
- Proyectos de software
- Sistemas operativos PowerPC
- Sistemas operativos MIPS
- Sistemas operativos X86-64
- Sistemas operativos IA-32