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.