Revelador | MIT , GE , Honeywell , Laboratorios Bell |
---|---|
Escrito en | PL/I , lenguaje ensamblador [1] |
Estado de funcionamiento | Maduro, actual, histórico, emulador disponible |
Modelo fuente | Código abierto |
Lanzamiento inicial | 1969 ( 1969 ) |
Último lanzamiento | 12.8 / 10 de agosto de 2023 ( 10/08/2023 ) |
Repositorio |
|
Disponible en | Inglés |
Plataformas | Máquinas de la serie GE-645 , Honeywell 6000 ( Honeywell 6180 , serie 60/nivel 68, mainframes DPS-8/M) |
Tipo de kernel | Núcleo monolítico |
Influenciado | Unix , GEORGE 3 , ICL VME , PRIMOS , Dominio/OS , Stratus VOS |
Interfaz de usuario predeterminada | Interfaz de línea de comandos |
Licencia | Originalmente propietario , software libre Licencia Multics desde 2007 [2] [3] |
Precedido por | Sistema de tiempo compartido compatible |
Sitio web oficial | multics-wiki.swenson.org |
Multics (" MULTiplexed Information and Computing Service ") es un influyente sistema operativo de tiempo compartido temprano basado en el concepto de una memoria de un solo nivel . [4] [5] Nathan Gregory escribe que Multics "ha influido en todos los sistemas operativos modernos desde entonces, desde microcomputadoras hasta mainframes". [6]
La planificación y el desarrollo inicial de Multics comenzaron en 1964, en Cambridge, Massachusetts . Originalmente era un proyecto cooperativo liderado por el MIT ( Proyecto MAC con Fernando Corbató ) junto con General Electric y Bell Labs . Se desarrolló en el ordenador GE 645 , que fue especialmente diseñado para él; el primero fue entregado al MIT en enero de 1967. GE ofreció sus sistemas 635 anteriores con un sistema de tiempo compartido temprano conocido como "Mark I" y tenía la intención de ofrecer el 645 con Multics como un sucesor más grande. Bell se retiró del proyecto en 1969 cuando quedó claro que no entregaría un sistema funcional a corto plazo. Poco después, GE decidió abandonar la industria informática por completo y vendió la división a Honeywell en 1970. Honeywell ofreció Multics comercialmente, pero con un éxito limitado.
Multics tiene numerosas características destinadas a garantizar una alta disponibilidad para que pueda soportar una utilidad informática similar a las utilidades de teléfono y electricidad . Para lograr esto, se utiliza una estructura de hardware modular y una arquitectura de software. El sistema puede crecer en tamaño simplemente agregando más recursos apropiados, ya sea potencia de procesamiento, memoria principal o almacenamiento en disco. Las listas de control de acceso independientes en cada archivo brindan un intercambio flexible de información, pero privacidad completa cuando es necesario. Multics tiene una serie de mecanismos estándar para permitir que los ingenieros analicen el rendimiento del sistema, así como una serie de mecanismos de optimización del rendimiento adaptativos.
Debido a sus muchas ideas novedosas y valiosas, Multics ha tenido una influencia significativa en la ciencia informática a pesar de sus fallas. [7] Su efecto más duradero en la industria informática fue inspirar la creación de Unix, que incorporó muchas características de Multics, pero pudo ejecutarse en hardware menos costoso. Unix fue desarrollado en Bell para permitir que su equipo de Multics continuara su investigación utilizando máquinas más pequeñas, primero un PDP-7 y finalmente el PDP-11 .
Multics implementa un almacenamiento de un solo nivel para el acceso a los datos, descartando la distinción clara entre archivos (llamados segmentos en Multics) y memoria de proceso . La memoria de un proceso consiste únicamente en segmentos que fueron mapeados en su espacio de direcciones . Para leerlos o escribir en ellos, el proceso simplemente utiliza instrucciones normales de la unidad central de procesamiento (CPU), y el sistema operativo se encarga de asegurarse de que todas las modificaciones se guardaron en el disco . En la terminología POSIX , es como si cada archivo fuera mmap()
editado; sin embargo, en Multics no existe el concepto de memoria de proceso , separado de la memoria utilizada para mantener los archivos mapeados, como lo tiene Unix . Toda la memoria en el sistema es parte de algún segmento, que aparece en el sistema de archivos ; esto incluye la memoria temporal del proceso, su pila de kernel, etc.
Los segmentos están limitados a 256 kilopalabras , poco más de 1 MB , porque el hardware de Multics tenía direcciones de palabra de 18 bits para el contenido de un segmento. Los archivos más grandes son "archivos multisegmento" y se manejan de manera diferente. El límite de 256 kW rara vez se encontraba en la práctica, porque en ese momento, un megabyte de memoria era prohibitivamente caro.
Otra idea nueva e importante de Multics fue el enlace dinámico , en el que un proceso en ejecución puede hacer que las rutinas externas estén disponibles agregando los segmentos que las contienen a su espacio de direcciones. Esto permite que las aplicaciones siempre utilicen la última versión de cualquier rutina externa, ya que esas rutinas se guardan en otros segmentos, que se vinculan dinámicamente solo cuando un proceso intenta comenzar la ejecución en ellos por primera vez. Dado que diferentes procesos pueden usar diferentes reglas de búsqueda , diferentes usuarios pueden terminar usando diferentes versiones de rutinas externas. Igualmente importante es que, con las configuraciones adecuadas en las funciones de seguridad de Multics, el código en el otro segmento puede obtener acceso a las estructuras de datos mantenidas en un proceso diferente. El enlace dinámico en Multics no requiere bibliotecas de enlace dinámico (DLL) especiales ; un programa puede vincularse dinámicamente a cualquier segmento ejecutable al que tenga derechos de acceso.
De este modo, para interactuar con una aplicación que se ejecuta en parte como un demonio (en otro proceso), el proceso de un usuario simplemente ejecuta una instrucción de llamada a un procedimiento normal en un segmento de código al que se había vinculado dinámicamente (un segmento de código que implementó alguna operación asociada con el demonio). El código en ese segmento puede entonces modificar los datos mantenidos y utilizados en el demonio. Cuando se completa la acción necesaria para iniciar la solicitud, una instrucción de retorno de procedimiento simple devuelve el control del proceso del usuario al código del usuario.
Multics también admite una reconfiguración en línea extremadamente agresiva : se pueden agregar y quitar unidades centrales de procesamiento , bancos de memoria, unidades de disco, etc. mientras el sistema continúa funcionando. En el sistema MIT, donde se realizó la mayor parte del desarrollo de software inicial, era una práctica común dividir el sistema multiprocesador en dos sistemas separados durante las horas libres eliminando gradualmente suficientes componentes para formar un segundo sistema en funcionamiento, dejando el resto aún en funcionamiento para los usuarios originales conectados. Las pruebas de desarrollo de software del sistema se podían realizar en el segundo sistema, luego los componentes del segundo sistema se agregaban nuevamente al sistema del usuario principal, sin haberlo apagado nunca. Multics admite múltiples CPU; es uno de los primeros sistemas multiprocesador.
Multics es el primer sistema operativo importante que se diseñó como un sistema seguro desde el principio. [8] A pesar de esto, las primeras versiones de Multics se vieron comprometidas repetidamente. [9] Esto condujo a un trabajo adicional que hizo que el sistema fuera más seguro y prefiguró las técnicas de ingeniería de seguridad modernas . Los robos se volvieron muy raros una vez que se adoptó la base de hardware de segunda generación; tiene soporte de hardware para seguridad orientada al anillo , un refinamiento multinivel del concepto de modo maestro . [ cita requerida ] Un proyecto de equipo tigre de la Fuerza Aérea de los EE. UU. probó la seguridad de Multics en 1973 bajo la palabra clave ZARF. El 28 de mayo de 1997, la Agencia de Seguridad Nacional estadounidense desclasificó este uso de la palabra clave ZARF.
Multics es el primer sistema operativo que proporciona un sistema de archivos jerárquico , [10] [11] y los nombres de archivo pueden tener una longitud y sintaxis casi arbitrarias. Un archivo o directorio determinado puede tener varios nombres (normalmente una forma larga y corta), y también se admiten enlaces simbólicos entre directorios. Multics es el primero en utilizar el concepto ahora estándar de pilas por proceso [ disputado – discutir ] en el núcleo , con una pila separada para cada anillo de seguridad. También es el primero en tener un procesador de comandos implementado como código de usuario ordinario, una idea utilizada más tarde en el shell de Unix . También es uno de los primeros escritos en un lenguaje de alto nivel (Multics PL/I ), [1] [12] después del sistema MCP de Burroughs escrito en ESPOL , una versión ampliada de ALGOL .
La implementación de Multics en entornos informáticos seguros también impulsó el desarrollo de aplicaciones de soporte innovadoras. En 1975, Morrie Gasser de MITRE Corporation desarrolló un generador de palabras aleatorias pronunciables para abordar los requisitos de contraseñas de instalaciones como el Centro de Servicios de Datos de la Fuerza Aérea (AFDSC) que procesaba información clasificada. Para evitar contraseñas fáciles de adivinar, el AFDSC decidió asignar contraseñas, pero concluyó que la asignación manual requería demasiada carga administrativa. Por lo tanto, se investigó un generador de palabras aleatorias y luego se desarrolló en PL/I. En lugar de basarse en fonemas , el sistema empleó segmentos fonémicos (aproximaciones de segundo orden del inglés) y otras reglas para mejorar la pronunciabilidad y la aleatoriedad, que se modelaron estadísticamente frente a otros enfoques. [13] Un descendiente de este generador se agregó a Multics durante el Proyecto Guardian. [14]
En 1964, Multics fue desarrollado inicialmente para el mainframe GE-645 , un sistema de 36 bits . El negocio de computadoras de GE, incluido Multics, fue adquirido por Honeywell en 1970; alrededor de 1973, Multics fue compatible con las máquinas Honeywell 6180 , que incluían mejoras de seguridad, incluido soporte de hardware para anillos de protección .
Bell Labs se retiró del proyecto en 1969; algunas de las personas que habían trabajado en él allí continuaron creando el sistema Unix . El desarrollo de Multics continuó en el MIT y General Electric. En el MIT en 1975, el uso de Multics estaba disminuyendo y no se recuperó en 1976 a los niveles anteriores. [15] [16] Finalmente, al reducir los precios, el MIT logró atraer a los usuarios de nuevo a Multics en 1978. [17]
En 1974, Honeywell firmó un contrato de desarrollo con la Fuerza Aérea (con el MIT como subcontratista) para desarrollar un núcleo de seguridad para Multics. Esto implicaría reducir el tamaño del núcleo de Multics moviendo componentes específicos del supervisor fuera del Anillo 0. Uno de los pasos iniciales después de realizar una evaluación de seguridad fue la implementación de un marco de seguridad multinivel dentro de Multics llamado AIM (Mecanismo de aislamiento de acceso). Esto proporcionó un control de acceso obligatorio que podría habilitarse para complementar el control de acceso discrecional ya existente que Multics ya poseía. [18] El Proyecto Guardian resultante funcionó hasta su finalización en 1976; si bien la mayoría de sus cambios no se agregaron a Multics, algunas partes del proyecto, como el procesador de interfaz frontal seguro propuesto, fueron producidas por Honeywell como SCOMP (Procesador de comunicaciones seguras). [19] El SCOMP y su sistema operativo STOP eventualmente evolucionarían a través de XTS-200 y XTS-300 en la oferta actual XTS-400 de sistemas operativos seguros. [20]
Honeywell continuó con el desarrollo del sistema hasta 1985. Se instalaron alrededor de 80 sitios multimillonarios en universidades, industrias y sitios gubernamentales. El sistema universitario francés tuvo varias instalaciones a principios de los años 80. Después de que Honeywell dejara de brindar soporte a Multics, los usuarios migraron a otros sistemas, como Unix.
En 1985, Multics recibió la certificación como sistema operativo seguro de nivel B2 utilizando los Criterios de evaluación de sistemas informáticos de confianza del Centro Nacional de Seguridad Informática (NCSC), una división de la NSA ; fue el primer sistema operativo evaluado a este nivel.
Multics fue distribuido entre 1975 y 2000 por Groupe Bull en Europa y por Bull HN Information Systems Inc. en Estados Unidos. En 2006, Bull SAS publicó el código fuente de las versiones MR10.2, MR11.0, MR12.0, MR12.1, MR12.2, MR12.3, MR12.4 y MR12.5 de Multics bajo una licencia de software libre . [21]
La última instalación conocida de Multics que funcionaba de forma nativa en hardware de Honeywell se cerró el 30 de octubre de 2000 en el Departamento de Defensa Nacional de Canadá en Halifax, Nueva Escocia, Canadá. [22]
En 2006, Bull HN publicó el código fuente de MR12.5, la versión final de Multics de 1992, en el MIT. [23] La mayor parte del sistema está ahora disponible como software libre , con la excepción de algunas piezas opcionales como TCP/IP . [24]
En 2014, Multics se ejecutó con éxito en el hardware actual utilizando un emulador creado por los multicianos Harry Reed y Charles Anthony. [25] La versión 1.0 del emulador está disponible a partir de 2017. [actualizar][ 26] La versión 12.6f de Multics acompaña a la versión 1.0 del emulador y agrega algunas características nuevas, incluida la recuperación de la línea de comandos y la edición utilizando el sistema de video. [27]
La siguiente es una lista de programas y comandos [28] para tareas informáticas comunes que son compatibles con la interfaz de línea de comandos de Multics . [29] [30]
El lenguaje de shell de Multics admite "funciones activas", que son similares a los comandos, pero que devuelven un valor de cadena. Una función activa se llama colocando el nombre de la función activa y los argumentos de la función activa entre corchetes [ y ] . La cadena devuelta por la función activa se sustituye en el comando en lugar de la llamada a la función activa. Por ejemplo, cuando se procesa el comando echo [working_dir] , se ejecuta la función activa working_dir ; devuelve la ruta completa del directorio de trabajo , que se sustituye en el comando, de modo que el comando echo imprime el directorio de trabajo.
Algunos programas pueden actuar como comandos o como funciones activas; cuando se ejecutan como un comando, su resultado se imprime, y cuando se ejecutan como una función activa, su resultado se devuelve como una cadena. [30]
Algunas funciones activas comunes son:
Peter H. Salus , autor de un libro que cubre los primeros años de Unix, [32] expresó una postura: "Con Multics intentaron tener un sistema operativo mucho más versátil y flexible, y fracasaron miserablemente". [33] Sin embargo, se dice que esta postura ha sido desacreditada en la comunidad informática porque muchas de las innovaciones técnicas de Multics se utilizan en los sistemas informáticos comerciales modernos. [7] [ se necesita una mejor fuente ]
El núcleo residente permanente de Multics, un sistema ridiculizado en su época por ser demasiado grande y complejo, tenía 135 KB de código. [ cita requerida ] El primer MIT GE-645 tenía 512 kilopalabras de memoria (2 MiB), una cantidad verdaderamente enorme en ese momento, y el núcleo utilizaba una porción moderada de la memoria principal de Multics.
El sistema completo, incluido el sistema operativo y el complejo compilador PL/I , los comandos de usuario y las bibliotecas de subrutinas, consta de unos 1500 módulos fuente. Estos tienen un promedio de aproximadamente 200 líneas de código fuente cada uno y se compilan en un total de aproximadamente 4,5 MiB de código de procedimiento, lo cual era bastante grande para los estándares de la época.
Los compiladores de Multics generalmente optimizan más la densidad del código que el rendimiento de la CPU, por ejemplo, utilizando pequeñas subrutinas llamadas operadores para secuencias de código estándar cortas, lo que hace que la comparación del tamaño del código objeto con los sistemas modernos sea menos útil. La alta densidad del código es una buena opción de optimización para Multics como un sistema multiusuario con una memoria principal costosa.
Durante la historia comercial de Multics, se comentaba a menudo internamente que el personal de ventas y marketing de Honeywell Information Systems (HIS) (posteriormente Honeywell-Bull) estaba más familiarizado y se sentía más cómodo defendiendo el negocio de la otra línea de ordenadores de Honeywell, el DPS 6 con GCOS . El DPS-6 y GCOS era una plataforma fiable y muy valorada para el inventario, la contabilidad, el procesamiento de textos y las aplicaciones de mercado vertical, como la banca, donde tenía una base de clientes considerable. Por el contrario, el potencial total de la flexibilidad de Multics incluso para las tareas más mundanas no era fácil de comprender en esa época y sus características estaban generalmente fuera del conjunto de habilidades de los analistas de negocios contemporáneos. [ cita requerida ] El alcance de esta desconexión se concretó con una anécdota transmitida por Paul Stachour, CNO/CSC:
Cuando American Telephone and Telegraph estaba cambiando su nombre a solo AT&T en 1983, un empleado del departamento legal de Honeywell se presentó y le preguntó a un especialista en multimedios si podía hacer los arreglos para cambiar el nombre en todos sus documentos computarizados. Cuando le preguntaron cuándo podría completarse el proceso, el especialista en multimedios respondió: "Ya está hecho". El empleado repitió que necesitaba actualizar cientos o quizás miles de documentos. El especialista en multimedios explicó que había ejecutado una búsqueda y reemplazo global mientras el empleado hablaba y que, de hecho, la tarea se había completado. [ cita requerida ]
El diseño y las características de Multics influyeron en el sistema operativo Unix , que fue escrito originalmente por dos programadores de Multics, Ken Thompson y Dennis Ritchie . [34] La influencia de Multics en Unix es evidente en muchas áreas, incluido el sistema de archivos jerárquico , la redirección , el shell y el nombre de algunos comandos. Pero la filosofía de diseño interno es bastante diferente, centrándose en mantener el sistema pequeño y simple, y corrigiendo así algunas deficiencias percibidas de Multics debido a sus altas demandas de recursos en el hardware informático limitado de la época.
El nombre Unix (originalmente Unics ) es en sí mismo un juego de palabras con Multics . Se rumorea que la U en Unix significa uniplexed en oposición a multiplexed de Multics, lo que subraya aún más el rechazo de los diseñadores a la complejidad de Multics en favor de un enfoque más directo y funcional para computadoras más pequeñas. (Garfinkel y Abelson [35] citan un origen alternativo: Peter Neumann en Bell Labs, viendo una demostración del prototipo, sugirió el nombre del juego de palabras UNICS -pronunciado " eunuchs "- como un "Multics castrado", aunque se dice que Dennis Ritchie lo negó. [36] )
Ken Thompson, en una entrevista transcrita de 2007 con Peter Seibel [34], se refiere a Multics como "sobrediseñado, sobreconstruido y sobre todo. Era casi inutilizable. Ellos [el Instituto Tecnológico de Massachusetts] todavía afirman que es un éxito monstruoso, pero claramente no lo fue". Sobre la influencia de Multics en Unix, Thompson afirmó que "las cosas que me gustaron lo suficiente (de Multics) como para realmente adoptarlas fueron el sistema de archivos jerárquico y el shell, un proceso separado que se puede reemplazar por algún otro proceso".
Dennis Ritchie escribió que el diseño de UNIX fue influenciado por CTSS . [37]
El sistema operativo de Prime Computer , PRIMOS , fue denominado "Multics en una caja de zapatos" por William Poduska , uno de los fundadores de la empresa. Poduska luego fundó Apollo Computer , cuyos sistemas operativos AEGIS y más tarde Domain/OS , a veces llamados "Multics en una caja de cerillas", extienden el diseño de Multics a un entorno de estación de trabajo gráfica en red.
El sistema operativo Stratus VOS de Stratus Computer (ahora Stratus Technologies ) está muy influenciado por Multics, y tanto su interfaz de usuario externa como su estructura interna guardan muchas similitudes con el proyecto anterior. Las características de alta confiabilidad, disponibilidad y seguridad de Multics se extienden en Stratus VOS para admitir una nueva línea de sistemas informáticos tolerantes a fallas que admiten un procesamiento de transacciones seguro y confiable . Stratus VOS es el descendiente más directamente relacionado de Multics que aún se encuentra en desarrollo activo y se utiliza en producción en la actualidad.
El sistema de tiempo compartido de consola múltiple (MCTS) de General Motors para la computadora STAR-100 de Control Data Corporation se basó en Multics.
La arquitectura de protección de Multics, que restringe la capacidad del código en un nivel del sistema para acceder a recursos en otro, se adoptó como base para las características de seguridad del sistema operativo VME de ICL .
El sistema de acceso múltiple de Edimburgo (EMAS) se basa particularmente en el concepto de almacenamiento de un solo nivel utilizado por Multics, que proporciona acceso a los archivos únicamente asignándolos a la memoria. Todo el espacio de memoria está asociado a un segmento.
El uso del servicio Multics, operado en el sistema Honeywell 6180, disminuyó... una disminución del 15 por ciento.
... la desaparición de varios proyectos de Multics que no lograron obtener financiación.
Sin embargo, este nuevo precio resultó tan atractivo para mucha gente que los usuarios y el uso de Multics aumentaron considerablemente.
Cierre de DND-H (17:08Z 30/10/00)
Se puede argumentar que UNIX es, en esencia, una implementación moderna del sistema CTSS del MIT.
La literatura contiene una gran cantidad de artículos sobre Multics y sus diversos componentes; una lista bastante completa está disponible en la página de Bibliografía de Multics y en una segunda bibliografía de Multics de 1994 (formato de texto). A continuación se enumeran los más importantes y/o informativos.