Multics

MULTICS
Multics (Multiplexed Information and Computing Service) fue uno de los primeros sistemas operativos de tiempo compartido y tuvo una gran influencia en el desarrollo de los posteriores sistemas operativos. 
El sistema operativo Multics fue desarrollado en 1965 y 1973.
Multics fue uno de los primeros sistemas operativos de tiempo compartido y tuvo una gran influencia en el desarrollo de los posteriores sistemas operativos.

Multics fue desarrollado únicamente para GE-645 de un sistema de 36 bits.
Multics dicen que soportaba una configuración ON-LINE muy agresiva, fue diseñado desde su principio como un sistema seguro desde su inicio.
Este sistema operativo que se pudo implementar en un único nivel de almacenamiento de datos, su memoria de procesos consistía en segmentos que estaban mapeados en su espacio de direcciones; para leer o escribir en ellos, el proceso simplemente utilizaba instrucciones normales de la CPU, y el sistema operativo tenía cuidado de asegurarse que todas las modificaciones fueran guardadas en disco.
También este sistema operativo fue un gran sistema para bases de datos relacionales.
Algunas de sus características de Multics son las siguientes:
Contaba con segmentos de memoria.
La arquitectura de memoria se dividía en segmentos y cada segmento tenia direcciones.
Memoria virtual,
Utilizaba una memoria paginada en forma única por el sistema Atlas.
Su memoria Virtual simulaba la memoria idealizada utilizando la segmentación y la paginación.
Sistema multiusuario.

 

Descripción

Los planes iniciales y el desarrollo de Multics comenzó en 1964. Originalmente era un proyecto cooperativo liderado por Fernando J. Corbató del MIT, con General Electric y los laboratorios Bell. Los laboratorios Bell abandonaron en 1969, y en 1970 el negocio de computación de General Electric, incluyendo Multics, fue adquirido por Honeywell.
Multics fue concebido como un producto comercial por General Electric, y alcanzó este logro para Honeywell, pero no tuvo un gran éxito. Sin embargo, tuvo un gran impacto en el campo de la computación gracias a sus muchas ideas nuevas y valiosas. Aunque en su época recibió muchas críticas , la historia ha demostrado que eran infundadas.
Un gran número de características intentaban proporcionar alta disponibilidad, de manera que el servicio de computación igualase a los servicios de telefonía y a la red eléctrica. Para alcanzar este logro, se utilizó una estructura modular tanto en el software como en el hardware, y el sistema podía crecer simplemente añadiendo más recursos. Listas de control de acceso sobre cada archivo proporcionaban un método flexible para compartir información, además de la privacidad requerida.
Contenía diferentes mecanismos estándar para permitir a los ingenieros analizar el rendimiento del sistema, además de varios mecanismos para la optimización del rendimiento.
En la terminología POSIX, era como si cada archivo fuese mapeado; sin embargo, en Multics no existía el concepto de memoria de proceso, separado del de la memoria utilizada para mantener mapeados sobre los archivos, como hace Unix. Toda la memoria del sistema formaba parte de algún segmento, que aparecía en el sistema de archivos; incluida la memoria temporal del proceso, la pila del núcleo, etc. (Una desventaja práctica, dadas las particularidades de la arquitectura del hardware de las máquinas en las que se ejecutaba, y no del concepto básico, era que el tamaño de los segmentos estaba limitado a 256K palabras de 36 bits, aproximadamente igual a 1MB actual, y por lo tanto se debía utilizar código extra para trabajar con archivos mayores que esto, llamados archivos multisegmento. En los días anteriores a las bases de datos grandes, y los posteriores gráficos bitmaps inmensos, no era frecuente encontrarse con esta limitación.)
Esto nos conduce a la segunda gran idea de Multics, enlace dinámico, mediante el que un proceso en ejecución puede solicitar que otros segmentos se añadan a su espacio de direcciones, estos segmentos pueden incluir código que puede ser ejecutado.
Con esta característica disponible, las aplicaciones automáticamente utilizaban la última versión de cualquier rutina externa que llamaban, estas rutinas estaban en otros segmentos, que se enlazaban dinámicamente sólo cuando un proceso intentaba ejecutarlas. Como diferentes procesos, pertenecientes a diferentes usuarios, podían utilizar diferentes reglas de búsqueda, diferentes usuarios podían automáticamente acabar utilizando diferentes versiones de las rutinas externas.
Igualmente importante, con la configuración adecuada de las características de seguridad de Multics, el código en el otro segmento podía ganar acceso a las estructuras de datos mantenidas en un proceso diferente.
De este modo, para interactuar con una aplicación ejecutándose en parte como un demonio (informática) (en otro proceso) un proceso de usuario simplemente realiza una llamanda normal a un procedimiento, hacia un segmento de código con el que se enlazó dinámicamente (un segmento de código que implementa alguna operación asociada con este demonio). El código en este segmento puede entonces modificar los datos mantenidos y utilizados por el demonio. Cuando la acción necesaria para comenzar la solicitud se completa, una simple instrucción de retorno del proceso retorna el control del proceso de usuario al código del usuario.
Debe notarse que estas dos ideas, se utilizan todavía en la mayoría de los sistemas operativos, independientemente del rápido y enorme avance realizado en el campo de la computación desde la década de 1960.
Multics también soportaba una reconfiguración on-line muy agresiva; las CPUs, los bancos de memoria, unidades de disco, etc. podían ser añadidas y quitadas mientras el sistema continuaba funcionando; entrando en servicio, o eliminándose cuando fuera necesario.
Multics también fue notable por su innovador énfasis en su diseño para obtener seguridad informática, y Multics fue posiblemente el primer sistema operativo diseñado como un sistema seguro desde su inicio. Independientemente de esto, las primeras versiones de Multics se mostraron vulnerables, no una vez, sino de forma repetida.
Esto condujo a más trabajo para mejorar la seguridad que trazó las técnias de seguridad modernas, e hizo los sistemas mucho más seguros; al adoptarse el hardware de segunda generación, con soporte hardware para los anillos de seguridad (un refinamiento multinivel del concepto de modo maestro), las intrusiones se convirtieron en algo muy extraño.
Además de haber sido el primer sistema operativo que proporcionó un sistema de archivos jerárquico, los nombres de los archivos casi podían tener una longitud y sintaxis arbitraria; dado un archivo o directorio este podía tener varios nombres (típicamente uno largo y otro corto); también se soportaban enlaces simbólicos entre directorios.
Fue el primero en utilizar el ahora estándar concepto de tener una pila por proceso en el núcleo, con una pila separada para cada anillo de seguridad. También fue uno de los primeros escritos en un lenguaje de alto nivel; se utilizó PL/1, aunque el sistema Burroughs B5000, que utilizaba ALGOL precedió a Multics.
El sistema completo, incluyendo no sólo el sistema operativo, sino también el complejo compilador de PL/I, los comandos de usuario, y las bibliotecas de subrutinas, contenía unos 1500 módulos de código fuente. Cada uno con una longitud media de unas 200 líneas de código fuente, y compilaban para producir aproximadamente 4,5 MB de código de procedimientos, que aunque hoy parezca pequeño era muy grande para los estándares de la época. 

 Los compiladores de Multics generalmente optimizaban la densidad de código antes que la velocidad de ejecución.