El sistema de multiprogramación THE ( THE OS ) fue un sistema operativo informático diseñado por un equipo liderado por Edsger W. Dijkstra , descrito en monografías entre 1965 y 1966 [ 1 ] y publicado en 1968 [ 2 ]. Dijkstra nunca le dio nombre al sistema; "THE" es simplemente la abreviatura de "Technische Hogeschool Eindhoven", nombre que entonces tenía la Universidad Tecnológica de Eindhoven en los Países Bajos . El sistema THE era principalmente un sistema por lotes [ 3 ] que admitía multitarea ; no fue diseñado como un sistema operativo multiusuario . Era muy similar al SDS 940 , pero "el conjunto de procesos en el sistema THE era estático" [ 3 ] .
El sistema THE aparentemente introdujo las primeras formas de memoria virtual paginada basada en software (el Electrologica X8 no admitía la gestión de memoria basada en hardware ), [ 3 ] liberando a los programas de la obligación de usar ubicaciones físicas en la memoria del tambor . Esto se logró mediante el uso de un compilador ALGOL modificado (el único lenguaje de programación compatible con el sistema de Dijkstra) para "generar automáticamente llamadas a rutinas del sistema , lo que garantizaba que la información solicitada estuviera en memoria, intercambiando si era necesario". [ 3 ] La memoria virtual paginada también se utilizó para almacenar en búfer los datos de los dispositivos de entrada/salida (E/S), y para una parte significativa del código del sistema operativo, y casi todo el compilador ALGOL 60. En este sistema, los semáforos se utilizaron como una construcción de programación por primera vez.
Diseño
El diseño del sistema de multiprogramación THE es significativo por su uso de una estructura en capas , en la que las capas "superiores" dependen únicamente de las capas "inferiores":
- La capa 0 era responsable de los aspectos de multiprogramación del sistema operativo. Decidía qué proceso se asignaba a la unidad central de procesamiento (CPU) y gestionaba los procesos bloqueados por semáforos. Se encargaba de las interrupciones y realizaba los cambios de contexto cuando era necesario un cambio de proceso. Este es el nivel más bajo. En términos modernos, este era el planificador .
- La capa 1 se encargaba de asignar memoria a los procesos. En términos modernos, esto era el sistema de gestión de memoria.
- La capa 2 se encargaba de la comunicación entre el sistema operativo y la consola del sistema .
- La capa 3 gestionaba todas las operaciones de entrada/salida entre los dispositivos conectados al ordenador. Esto incluía el almacenamiento en búfer de la información procedente de los distintos dispositivos.
- La capa 4 estaba compuesta por programas de usuario . Había 5 procesos que, en total, se encargaban de compilar , ejecutar e imprimir dichos programas. Al finalizar, devolvían el control a la cola de planificación , que se basaba en prioridades , dando preferencia a los procesos iniciados recientemente y a aquellos que se habían bloqueado debido a operaciones de entrada/salida.
- La capa 5 era el usuario; como señala Dijkstra, "no fue implementada por nosotros".
La restricción de que las capas superiores solo pueden depender de las inferiores fue impuesta por los diseñadores para facilitar el razonamiento sobre el sistema (mediante métodos cuasi formales ) y también para simplificar la construcción y las pruebas incrementales del sistema. Las capas se implementaron en orden, comenzando por la capa 0, con pruebas exhaustivas de las abstracciones que proporcionaba cada capa. Esta división del núcleo en capas era similar, en cierto modo, al modelo de segmentación en anillo posterior de Multics . Varios sistemas operativos posteriores han utilizado la arquitectura por capas en cierta medida, incluidos Windows NT y macOS , aunque generalmente con menos capas.
El código del sistema fue escrito en lenguaje ensamblador para la computadora holandesa Electrologica X8 . Esta computadora tenía un tamaño de palabra de 27 bits, 48 kilopalabras de memoria de núcleo , [ 3 ] 512 kilopalabras de memoria de tambor que proporcionaban almacenamiento de respaldo para el algoritmo de caché LRU , lectores de cinta de papel, perforadoras de cinta de papel, trazadores e impresoras.
Véase también
Referencias
- ↑ Dijkstra, Edsger W. La estructura del sistema de multiprogramación 'THE' (EWD-196) (PDF) . Archivo EW Dijkstra. Centro de Historia Americana, Universidad de Texas en Austin .( transcripción ) (14 de junio de 1965)
- ↑ Dijkstra, EW (1968), "La estructura del sistema de multiprogramación 'THE'", Communications of the ACM , 11 (5): 341– 346, doi : 10.1145/363095.363143 , S2CID 2021311
- 1 2 3 4 5 Silberschatz, Abraham; Peterson, James L. (mayo de 1988), "13: Perspectiva histórica", Conceptos de sistemas operativos , pág. 512
Enlaces externos
- El código fuente está disponible.
- Software programado en lenguaje ensamblador
- Sistemas operativos descontinuados
- Inventos holandeses
- Informática en los Países Bajos
- Tecnologías de la información en los Países Bajos
- Edsger W. Dijkstra
- Software de 1968