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 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 , 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.
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 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.