El sistema multiprogramación THE o THE OS fue un sistema operativo de computadora diseñado por un equipo dirigido por Edsger W. Dijkstra , descrito en monografías en 1965-66 [1] y publicado en 1968. [2] Dijkstra nunca nombró el sistema; "THE" es simplemente la abreviatura de "Technische Hogeschool Eindhoven", entonces el nombre (en holandés ) de la Universidad Tecnológica de Eindhoven de 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 parecido 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 soportaba la gestión de memoria basada en hardware ), [3] liberando a los programas de verse obligados a utilizar ubicaciones físicas en la memoria del tambor . Lo hizo utilizando 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 , que se aseguraban de que la información solicitada estuviera en la memoria, intercambiándola si era necesario". [3] La memoria virtual paginada también se utilizó para almacenar en búfer los datos del dispositivo 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 multiprogramación THE es significativo por el 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 contabilizaba los procesos que estaban bloqueados en los semáforos . Se ocupaba 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, era el planificador .
- La capa 1 se encargaba de asignar memoria a los procesos. En términos modernos, era el buscapersonas.
- La capa 2 se ocupa de la comunicación entre el sistema operativo y la consola del sistema .
- La capa 3 administraba todas las entradas y salidas entre los dispositivos conectados a la computadora, lo que incluía el almacenamiento en búfer de la información de los distintos dispositivos.
- La capa 4 estaba formada por programas de usuario . Había 5 procesos: en total, se encargaban de compilar , ejecutar e imprimir los programas de usuario. Cuando terminaban, pasaban el control de nuevo a la cola de programación , que estaba basada en prioridades , favoreciendo los procesos iniciados recientemente y los que se bloqueaban debido a la E/S.
- La capa 5 era el usuario; como señala Dijkstra, "no implementada por nosotros".
La restricción de que las capas superiores solo pueden depender de las capas inferiores fue impuesta por los diseñadores para hacer más manejable el razonamiento sobre el sistema (usando métodos cuasiformales ), y también para facilitar la construcción y prueba del sistema de manera incremental. Las capas se implementaron en orden, la capa 0 primero, con pruebas exhaustivas de las abstracciones proporcionadas por cada capa a su vez. Esta división del núcleo en capas era similar en algunos aspectos al modelo de segmentación en anillo posterior de Multics . Varios sistemas operativos posteriores han utilizado capas hasta cierto punto, incluidos Windows NT y macOS , aunque generalmente con menos capas.
El código del sistema se escribió 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 central , [3] 512 kilopalabras de memoria de tambor que proporcionaba 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
- Sistema multiprogramación RC 4000
- Ring (seguridad informática)
- Cronología de los sistemas operativos
- El código fuente está disponible en http://archive.computerhistory.org/resources/text/Knuth_Don_X4100/PDF_index/k-1-pdf/k-1-C1063.6-source-THE-os.pdf
Referencias
- ^ Dijkstra, Edsger W. La estructura del sistema de multiprogramación 'THE' (EWD-196) (PDF) . Archivo EW Dijkstra. Centro de Historia Estadounidense, 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
- ^ abcde Silberschatz, Abraham; Peterson, James L. (mayo de 1988), "13: Perspectiva histórica", Conceptos de sistemas operativos , pág. 512