stringtranslate.com

multics

Multics (" MULTiplexed Information and Computing Service ") es uno de los primeros e influyentes sistemas operativos de tiempo compartido basado en el concepto de 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 iniciales de Multics comenzaron en 1964, en Cambridge, Massachusetts . Originalmente fue un proyecto cooperativo liderado por el MIT ( Proyecto MAC con Fernando Corbató ) junto con General Electric y Bell Labs . Fue desarrollado en la computadora GE 645 , que fue diseñada especialmente para ello; el primero se entregó 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 que funcionara en el corto plazo. Poco después, GE decidió abandonar por completo la industria informática 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 admita una utilidad informática similar a las 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 añadiendo más recursos apropiados, ya sea potencia informática, memoria principal o almacenamiento en disco. Las listas de control de acceso separadas en cada archivo brindan un intercambio de información flexible, pero con total privacidad cuando es necesario. Multics tiene una serie de mecanismos estándar para permitir a los ingenieros analizar el rendimiento del sistema, así como una serie de mecanismos adaptativos de optimización del rendimiento.

Debido a sus muchas ideas novedosas y valiosas, Multics ha tenido una influencia significativa en la informática a pesar de sus fallos. [7] Su efecto más duradero en la industria informática fue inspirar la creación de Unix, que incluía muchas características de Multics, pero podía ejecutarse en hardware menos costoso. Unix fue desarrollado en Bell para permitir que su equipo Multics continuara su investigación utilizando máquinas más pequeñas, primero una PDP-7 y finalmente una PDP-11 .

Ideas novedosas

Manual de referencia de comandos multics

Multics implementa un almacén de un solo nivel para el acceso a datos, descartando la clara distinción entre archivos (llamados segmentos en Multics) y memoria de proceso . La memoria de un proceso consta únicamente de segmentos que fueron asignados a su espacio de direcciones . Para leerlos o escribirlos, 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 terminología POSIX , es como si cada archivo fuera mmap()editado; sin embargo, en Multics no existe el concepto de memoria de proceso , separada de la memoria utilizada para contener archivos mapeados, como lo tiene Unix . Toda la memoria del sistema es parte de algún segmento, que aparece en el sistema de archivos ; esto incluye la memoria temporal 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 Multics tenía direcciones de palabras de 18 bits para el contenido de un segmento. Los archivos más grandes son "archivos multisegmentos" y se manejan de manera diferente. El límite de 256 kW rara vez se alcanzaba en la práctica, porque en aquella época un megabyte de memoria era prohibitivamente caro.

Otra nueva idea importante de Multics fue la vinculación dinámica , en la 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 utilicen siempre la última versión de cualquier rutina externa, ya que esas rutinas se mantienen en otros segmentos, que se vinculan dinámicamente sólo cuando un proceso intenta por primera vez comenzar la ejecución en ellos. 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 la configuración adecuada en las funciones de seguridad de Multics, el código del otro segmento puede acceder a estructuras de datos mantenidas en un proceso diferente. Los enlaces dinámicos en Multics no requieren bibliotecas de enlaces dinámicos (DLL) especiales ; un programa puede vincularse dinámicamente a cualquier segmento ejecutable al que tenga derechos de acceso.

Por lo tanto, para interactuar con una aplicación que se ejecuta en parte como un demonio (en otro proceso), el proceso de un usuario simplemente realiza una instrucción de llamada a un procedimiento normal a 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 luego modificar los datos mantenidos y utilizados en el demonio. Cuando se completa la acción necesaria para comenzar la solicitud, una instrucción de devolución 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 del MIT, donde se realizaba 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 funcional, dejando el resto todavía ejecutándose para el original. Usuarios Conectados. Las pruebas de desarrollo del software del sistema se podían realizar en el segundo sistema, luego los componentes del segundo sistema se volvían a agregar al sistema principal del usuario, sin siquiera haberlo apagado. Multics admite múltiples CPU; Es uno de los primeros sistemas multiprocesador.

Multics es el primer sistema operativo importante diseñado desde el principio como un sistema seguro . [8] A pesar de esto, las primeras versiones de Multics se vieron comprometidas repetidamente. [9] Esto condujo a nuevos trabajos que hacen que el sistema sea más seguro y prefiguró las técnicas modernas de ingeniería de seguridad . 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 a anillos , un refinamiento multinivel del concepto de modo maestro . [ cita necesaria ] Un proyecto del equipo tigre de la Fuerza Aérea de 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 los archivos pueden tener una longitud y sintaxis casi arbitraria. Un archivo o directorio determinado puede tener varios nombres (normalmente uno largo y uno corto) 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 ] en el kernel , 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 normal, una idea que luego se utilizó 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 Burroughs MCP 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 procesa información clasificada. Para evitar contraseñas adivinables, la AFDSC decidió asignar contraseñas, pero concluyó que la asignación manual requería demasiada sobrecarga administrativa. Por lo tanto, se investigó y luego desarrolló un generador de palabras aleatorias en PL/I. En lugar de basarse en fonemas , el sistema empleaba segmentos fonémicos (aproximaciones de segundo orden del inglés) y otras reglas para mejorar la pronunciabilidad y la aleatoriedad, que se modeló estadísticamente con respecto a otros enfoques. [13] Un descendiente de este generador fue agregado a Multics durante Project Guardian. [14]

Historia del proyecto

En 1964, Multics se desarrolló inicialmente para la computadora central GE-645 , un sistema de 36 bits . Honeywell se hizo cargo del negocio de informática de GE, incluido Multics, en 1970; Alrededor de 1973, Multics es compatible con las máquinas Honeywell 6180 , lo que incluyó mejoras de seguridad, incluido el soporte de hardware para anillos de protección .

Bell Labs se retiró del proyecto en 1969; Algunas de las personas que habían trabajado allí crearon 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 en 1976 no se recuperó a los niveles anteriores. [15] [16] Finalmente, mediante la reducción de precios, el MIT logró atraer a los usuarios de nuevo a Multics en 1978. [17]

Honeywell continuó desarrollando el sistema hasta 1985. Se instalaron alrededor de 80 sitios multimillonarios en universidades, industrias y sitios gubernamentales. El sistema universitario francés contaba con varias instalaciones a principios de los años 1980. Después de que Honeywell dejó de admitir Multics, los usuarios migraron a otros sistemas como Unix.

En 1985, Multics obtuvo la certificación como sistema operativo seguro de nivel B2 utilizando los criterios de evaluación de sistemas informáticos confiables del Centro Nacional de Seguridad Informática (NCSC), una división de la NSA , el primer sistema operativo evaluado a este nivel.

Multics fue distribuido de 1975 a 2000 por Groupe Bull en Europa y por Bull HN Information Systems Inc. en Estados Unidos. En 2006, Bull SAS lanzó 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 . [18]

La última instalación conocida de Multics que se ejecutó 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á. [19]

Estado actual

En 2006, Bull HN lanzó el código fuente de MR12.5, la versión final de Multics de 1992, al MIT. [20] La mayor parte del sistema ahora está disponible como software gratuito con la excepción de algunas piezas opcionales como TCP/IP . [21]

En 2014, Multics se ejecutó con éxito en el hardware actual utilizando un emulador creado por los multician Harry Reed y Charles Anthony. [22] La versión 1.0 del emulador está disponible a partir de 2017 . [23] 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. [24]

Comandos

La siguiente es una lista de programas y comandos [25] para tareas informáticas comunes que son compatibles con la interfaz de línea de comandos de Multics . [26] [27]

Comandos de acceso a archivos y directorios

editores de texto

Formateadores de documentos

Compiladores e intérpretes

Correo electrónico

Documentación en línea

secuencias de comandos

Procesamiento de datos

Sesiones de inicio de sesión

Funciones activas

El lenguaje de shell Multics admite "funciones activas", que son similares a los comandos, pero que devuelven un valor de cadena. Una función activa se llama poniendo 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 [dir_trabajo] , se ejecuta la función activa dir_trabajo ; devuelve la ruta completa del directorio de trabajo , que se sustituye en el comando, de modo que el comando echo imprima el directorio de trabajo.

Algunos programas pueden actuar como comandos o como funciones activas; cuando se ejecuta como un comando, su resultado se imprime y cuando se ejecuta como una función activa, su resultado se devuelve como una cadena. [27]

Algunas funciones activas comunes son:

Observaciones retrospectivas

Peter H. Salus , autor de un libro que cubre los primeros años de Unix, [28] expresó una posición: "Con Multics intentaron tener un sistema operativo mucho más versátil y flexible, y fracasó estrepitosamente". [29] Sin embargo, se dice que esta posición ha sido desacreditada en la comunidad informática porque muchas de las innovaciones técnicas de Multics se utilizan en 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 necesaria ] El primer MIT GE-645 tenía 512 kilopalabras de memoria (2 MiB), una cantidad realmente enorme en ese momento, y el kernel usaba una porción moderada de la memoria principal de Multics.

Todo el sistema, incluido el sistema operativo y el complejo compilador PL/I , los comandos de usuario y las bibliotecas de subrutinas, consta de aproximadamente 1500 módulos fuente. Estos tienen un promedio de aproximadamente 200 líneas de código fuente cada uno y se compilan hasta 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 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 de código es una buena opción de optimización para Multics como sistema multiusuario con una memoria principal costosa.

Durante la historia de su producto comercial, a menudo se comentaba internamente que el personal de ventas y marketing de Honeywell Information Systems (HIS) (más tarde Honeywell-Bull) estaba más familiarizado y se sentía más cómodo presentando argumentos comerciales para la otra línea de computadoras de Honeywell, el DPS 6 con GCOS. . El DPS-6 y el GCOS eran una plataforma confiable y bien considerada para aplicaciones de inventario, contabilidad, procesamiento de textos y mercados verticales, como la banca, donde tenía una base de clientes considerable. Por el contrario, todo el potencial de la flexibilidad de Multics incluso para tareas mundanas no era fácil de comprender en esa época y sus características generalmente estaban fuera del conjunto de habilidades de los analistas de negocios contemporáneos. [ cita necesaria ] El alcance de esta desconexión se concretó en una anécdota transmitida por Paul Stachour, CNO/CSC:

Cuando American Telephone and Telegraph estaba cambiando su nombre a AT&T en 1983, un miembro del personal del departamento legal de Honeywell se presentó y le preguntó a un multiciano si podía hacer arreglos para cambiar el nombre en todos sus documentos computarizados. Cuando se le preguntó cuándo podría completarse el proceso, el multiciano respondió: "Ya está hecho". El empleado repitió que necesitaba cientos, tal vez miles de documentos actualizados. El multiciano explicó que había ejecutado una búsqueda y reemplazo global mientras el miembro del personal hablaba y que, de hecho, la tarea se completó. [ cita necesaria ]

Influencia en otros proyectos

Unix

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 . [30] La influencia de Multics en Unix es evidente en muchas áreas, incluido el sistema de archivos jerárquico , la redirección , el shell y la denominación 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 así corregir 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 lugar de multiplexado 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 sencillo y viable para computadoras más pequeñas. (Garfinkel y Abelson [31] citan un origen alternativo: Peter Neumann de los Laboratorios Bell, observando una demostración del prototipo, sugirió el juego de palabras UNICS –pronunciado " eunucos "- como un "Multics castrado", aunque se dice que Dennis Ritchie negó esto. [32] )

Ken Thompson, en una entrevista transcrita en 2007 con Peter Seibel [30] se refiere a Multics como "sobrediseñado y sobreconstruido y sobre todo. Estaba casi inutilizable. Ellos [el Instituto de Tecnología de Massachusetts] todavía afirman que es un éxito monstruoso, pero claramente no lo era". Sobre la influencia de Multics en Unix, Thompson afirmó que "las cosas que me gustaron lo suficiente (sobre Multics) como para tomarlas fueron el sistema de archivos jerárquico y el shell, un proceso separado que puedes reemplazar con algún otro proceso".

Dennis Ritchie escribió que el diseño de UNIX fue influenciado por CTSS . [33]

Otros sistemas operativos

William Poduska , fundador de la empresa, se refirió al sistema operativo Prime Computer , PRIMOS , como "Multics en una caja de zapatos". Más tarde, Poduska fundó Apollo Computer , cuyos sistemas operativos AEGIS y posteriores Domain/OS , a veces llamados "Multics en una caja de cerillas", extiende el diseño de Multics a un entorno de estación de trabajo de gráficos en red.

El sistema operativo Stratus VOS de Stratus Computer (ahora Stratus Technologies ) está fuertemente influenciado por Multics, y tanto su interfaz de usuario externa como su estructura interna tienen muchas semejanzas con el proyecto anterior. Las características de alta confiabilidad, disponibilidad y seguridad de Multics se amplían en Stratus VOS para admitir una nueva línea de sistemas informáticos tolerantes a fallas que respaldan el 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 uso de 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 nivel utilizado por Multics, proporcionando acceso a archivos sólo mapeándolos en la memoria. Todo el espacio de memoria está asociado a un segmento.

Ver también

Referencias

  1. ^ ab RA Freiburghouse, "El compilador Multics PL/1", General Electric Company, Cambridge, Massachusetts, 1969.
  2. ^ "Licencia Multics (Multics) - Iniciativa de código abierto". opensource.org . 5 de febrero de 2008 . Consultado el 11 de abril de 2018 .
  3. ^ "Mitos sobre los multics". www.multicians.org . Consultado el 11 de abril de 2018 .
  4. ^ Dennis M. Ritchie, "La evolución del sistema de tiempo compartido Unix", Comunicaciones de ACM, vol. 17, 1984, págs. 365-375.
  5. ^ Dan Murphy (1996) [1989]. "Orígenes y desarrollo de TOPS-20".
  6. ^ Gregory, Nathan (mayo de 2018). El Tym de antes. Lulu.com. pag. 66.ISBN _ 9781387824755. Consultado el 29 de marzo de 2020 .
  7. ^ ab "Mitos sobre los multics". www.multicians.org . Consultado el 11 de abril de 2018 .
  8. ^ Saltzer, Jerome H. (febrero de 1974). "Protección y Control del Intercambio de Información en Multics" (PDF) . Introducción a Multics", MAC TR-123 (Reporte). Cambridge, MA: Instituto de Tecnología de Massachusetts y Honeywell Information Systems Inc. págs. 2–41 . Consultado el 16 de marzo de 2022 .
  9. ^ Tom Van Vleck (2002). "Cómo la Fuerza Aérea rompió la seguridad de Multics".
  10. ^ "Glosario Multics -F-". www.multicians.org . Consultado el 11 de abril de 2018 .
  11. ^ RC Daley y PG Neumann, "Un sistema de archivos de uso general para almacenamiento secundario", AFIPS '65 (otoño, parte I) Actas del 30 de noviembre al 1 de diciembre de 1965
  12. ^ Brian Kernighan sobre los orígenes de Unix LWN.net. 2022.
  13. ^ "Un generador de palabras aleatorias para contraseñas pronunciables" (PDF) . Bedford, MA: División de Sistemas Electrónicos, Comando de Sistemas de la Fuerza Aérea, USAF. Noviembre de 1975. ESD-TR-75-97. Archivado (PDF) desde el original el 8 de abril de 2022 . Consultado el 8 de marzo de 2021 .
  14. ^ Van Vleck, Tom. "Generador de contraseñas" . Consultado el 8 de marzo de 2021 .
  15. ^ "Informe del Presidente" (PDF) . Boletín del Instituto de Tecnología de Massachusetts . 111 (4): 355. Diciembre de 1975 . Consultado el 12 de abril de 2022 . El uso del servicio Multics, operado en el sistema Honeywell 6180, disminuyó... una disminución del 15 por ciento.
  16. ^ "Informe del Presidente" (PDF) . Boletín del Instituto de Tecnología de Massachusetts . 112 (4): 392. Noviembre de 1976 . Consultado el 12 de abril de 2022 . ... la desaparición de varios proyectos Multics que no lograron obtener financiación.
  17. ^ "Informe del Presidente y del Canciller" (PDF) . Instituto de Tecnología de Massachusetts. 1978. pág. 450 . Consultado el 12 de abril de 2022 . Sin embargo, este nuevo precio resultó tan atractivo para muchas personas que los usuarios y el uso de Multics aumentaron considerablemente.
  18. ^ "Múltiples". cosas.mit.edu . Consultado el 25 de julio de 2022 .
  19. ^ "Fechas del historial de Multics" . Consultado el 13 de septiembre de 2015 . Apagado de DND-H (17:08Z 30/10/00)
  20. ^ Van Vleck, Tom. "Código abierto para multics". Multicians.org . Consultado el 11 de abril de 2016 .
  21. ^ Antonio, Carlos. "(correo electrónico) Re: [dps8m-developers] Multiprocesador y/o Multics en red". Fuenteforge.net . Consultado el 11 de abril de 2016 .
  22. ^ "RingZero - Multics renacido". WikidotCom . Consultado el 11 de abril de 2015 .
  23. ^ "Simulador multics" . Consultado el 9 de julio de 2017 .
  24. ^ "Instalación de Multics" . Consultado el 19 de mayo de 2020 .
  25. ^ Honeywell Bull, Inc. (febrero de 1985). Comandos Multics y Funciones Activas (AG92-06) (PDF) . Consultado el 30 de marzo de 2023 .
  26. ^ "Unix y Multics".
  27. ^ ab "Comandos múltiples".
  28. ^ Salus, Peter H. (1994). Un cuarto de siglo de UNIX (Reimpreso con correcciones en enero de 1995. ed.). Reading, Massachusetts: Pub Addison-Wesley. ISBN del condado 978-0-201-54777-1.
  29. ^ Ward, Mark (20 de agosto de 2009). "40 años de Unix". Noticias de la BBC . Consultado el 27 de abril de 2010 .Citando a Peter Salus.
  30. ^ ab Peter Seibel. Codificadores en el trabajo : reflexiones sobre el oficio de la programación. Publicaciones de prensa, 2007. ISBN 978-1-4302-1948-4 
  31. ^ Garfinkel, Simson y Abelson, Harold. Arquitectos de la sociedad de la información: treinta y cinco años del laboratorio de informática del MIT. Prensa del MIT, 1999. ISBN 978-0262071963 
  32. ^ Karn, Phil (28 de octubre de 1981). "Orígenes de Unix". Grupo de noticias : fa.unix-wizards. Usenet:  [email protected] . Consultado el 11 de abril de 2014 .
  33. ^ Ritchie, Dennis M. (1977). El sistema de tiempo compartido Unix: una retrospectiva (PDF) . Décima Conferencia Internacional de Hawái sobre Ciencias de Sistemas. Se puede argumentar que UNIX es en esencia una implementación moderna del sistema CTSS del MIT.

Otras lecturas

La literatura contiene una gran cantidad de artículos sobre Multics y varios componentes del mismo; 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, más breve (formato de texto). Los más importantes y/o informativos se enumeran a continuación.

Detalles técnicos

Seguridad

enlaces externos