IBM 7094 y CTSS

A mediados de la década del 60, la #IBM 7094 era uno de los mainframes
más grandes y veloces disponibles, capaz de sumar cifras de coma
flotante a una velocidad de 0,35 MIPS. Una 7094 estándar tenía 32
kilowords de memoria de 36 bits por word. Sus canales de datos podían
acceder el bus de memoria y correr programas de canal simple para
realizar E/S una vez inicializada la CPU, y los canales podían provocar
una interrupción de CPU cuando finalizaba la E/S. La 7094 costaba unos
3,5 millones de U$S de la época.

    IBM había sido generosa con el #MIT en los 50s y 60s, donando o
    haciendo fuertes descuentos sobre sus mayores computadoras
    científicas. Cuando desarrollaban una máquina científica de 36 bits
    tope de gama, el MIT podía esperar recibir un ejemplar de la serie.



La máquina operaba según el paradigma de procesamiento por lotes,
controlando el Sistema Monitor de lenguaje FORTRAN (FMS).

Cada programador@ elaboraba sus órdenes de trabajo en papel, y por medio
de una máquina perforadora las traducían en un mazo de tarjetas de
cartón perforado.

Estas órdenes de trabajo de computo ("JOBS") se transferían a cinta
magnética en un #mainframe IBM 1401 de uso auxiliar. El monitor FMS
cargaba en la memoria de núcleo de la 7094 a través del cargador BSS
(Subrutina Simbólica Binaria). De esta forma la 7094 era capaz de leer
de a un trabajo por vez, ejecutarlo y registrar su salida en otra cinta.
La obtención de la salida de impresión y el perforado fuera de línea,
nuevamente la IBM 1401.

Cada trabajo de usuario de FMS constaban con una pequeña rutina monitor
que finalizaba los trabajos que superaran sus estimados de tiempo de
cómputo predeterminados. También se cargaban y enlazaban rutinas de
bibliotecas aritméticas y de E/S.

Por ello, cada trabajo de usuari@ recibía el control completo y total de
la máquina: todos los 32K de memoria, todos los canales de datos, todo.
En esencia, implicaba que cada trabajo de cómputo constituía en sí un
sistema operativo completo.

Este paradigma implica un control muy astringente sobre el uso del
equipo.

    A comienzos de los sesentas, se acordó que el MIT obtendría una
    computadora para poder utilizarla en un esquema de turnos de 8
    horas. Uno de los turnos debería quedar disponible para unos 40
    colegios y universidades de Nueva Inglaterra, y al tercer turno
    estaría disponible a IBM para su propio uso. Uno de los trabajos
    computacionales de IBM en su turno correspondiente de ciclos de
    computadora era calcular handicaps de yates. El presidente de IBM
    gustaba de correr en grandes yates en el estrecho de Long Island, y
    estos barcos recibían puntos de handicap por medio de una fórmula
    complicada. En el centro de computación del MIT existía un trabajo
    especial de resolución algorítmica programada en un mazo de tarjetas
    perforadas, y si llegaba una solicitud remota por parte de IBM, los
    operadores debían detener cualquier tarea de computación que se
    encontrase en ejecución en la máquina y hacer el cálculo de puntajes
    para los yates de forma inmediata.



Todas estas limitaciones astringentes fueron el origen de la creación de
CTSS, uno de los primeros sistemas de cómputo a tiempo compartido.

CTSS

El CTSS del MIT fue llamado “compatible” en el sentido que podía correr
FMS en el tambor B de memoria de núcleo en forma de usuari2 en segundo
plano (de forma casi tan eficiente como en una máquina propia), a la vez
que podía cargar, compilar y ejecutar programas #FORTRAN en el ambiente
de tiempo de cómputo compartido en primer plano, con algunas
limitaciones.

El supervisor ("kernel") de CTSS proveía hasta 30 “máquinas virtuales”
cada una de las cuales representaba una IBM 7094. Una de estas máquinas
virtuales era la máquina en segundo plano, y tenía acceso a las unidades
de cinta. Las otras máquinas virtuales representaba l@s usuari@s en
primer plano: estas máquinas virtuales podían correr código máquina
regular de la IBM 7094 a la velocidad de la 7094, y ejecutar una
instrucción extra no existente en la original invocadora de un gran
conjunto de servicios a nivel supervisor.

Estos servicios incluían E/S de terminal y E/S de sistema de archivaje.
Podían escribirse programas para el ambiente en primer plano en
cualquier lenguaje de programación disponible para la IBM 7094; y se
proveían bibliotecas que permitían lenguajes compilados como MAD y luego
Darthmouth BASIC.

    CTSS proveía un sistema de archivaje que le daba a cada usuario
    registrado un directorio separado de ficheros de disco.