EL sistema de multiprogramación

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

El EL sistema multiprogramación o EL SO fue un sistema operativo informático diseñado por un equipo dirigido por Edsger W. Dijkstra, descrito en monografías en 1965-66 y publicado en 1968. Dijkstra nunca nombró el sistema; "EL" es simplemente la abreviatura de "Technische Hogeschool Eindhoven", luego 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 que admitía la 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".

El sistema THE aparentemente introdujo las primeras formas de memoria virtual paginada basada en software (la Electrologica X8 no admitía la gestión de memoria basada en hardware), 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, lo que garantizaba que la información solicitada estuviera en la memoria, intercambiándola si era necesario". ;. 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 importante del código del sistema operativo y casi todo el compilador ALGOL 60. En este sistema se utilizaron por primera vez semáforos como construcción de programación.

Diseño

El diseño del sistema de multiprogramación THE es importante por el uso de una estructura en capas, en la que las funciones "superiores" las capas dependen de las capas "inferiores" solo capas:

  • Capa 0 fue responsable de los aspectos multiprogramación del sistema operativo. Decidió qué proceso se asignó a la unidad central de procesamiento (CPU), y representó procesos bloqueados en semaforas. Se trató de interrupciones y realizó los interruptores de contexto cuando se necesitaba un cambio de proceso. Este es el nivel más bajo. En términos modernos, este era el programador.
  • Capa 1 le preocupaba asignar la memoria a los procesos. En términos modernos, este era el pager.
  • Capa 2 trata de la comunicación entre el sistema operativo y la consola del sistema.
  • Capa 3 gestionó todo I/O entre los dispositivos conectados a la computadora. Esto incluyó información de amortiguación de los diversos dispositivos.
  • Capa 4 consistía en programas de usuario. Hubo 5 procesos: en total, manejaron la compilación, ejecución e impresión de programas de usuario. Cuando terminaron, pasaron el control de nuevo a la cola programada, que se basaba en prioridades, favoreciendo procesos recién iniciados y aquellos que bloquearon debido a I/O.
  • Capa 5 era el usuario; como señala Dijkstra, "no implementado por nosotros".

Los diseñadores impusieron la restricción de que las capas superiores sólo pueden depender de las inferiores para hacer más manejable el razonamiento sobre el sistema (utilizando métodos cuasi formales) y también para facilitar la construcción y prueba del sistema de forma incremental. Las capas se implementaron en orden, la capa 0 primero, con pruebas exhaustivas de las abstracciones proporcionadas por cada capa por turno. Esta división del núcleo en capas era similar en algunos aspectos a la división de Multics. modelo posterior de segmentación de anillos. Varios sistemas operativos posteriores han utilizado capas hasta cierto punto, incluidos Windows NT y macOS, aunque normalmente 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 central, 512 kilopalabras de memoria de tambor que proporcionaba un almacén de respaldo para el algoritmo de caché LRU, lectores de cintas de papel, perforadoras de cintas de papel, trazadores e impresoras.

Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save