DSN_XP y la noción de tiempo compartido

Tiempo compartido


Uno de los recuerdos de los inicios de programación en Ecuador trata justamente de la noción de tiempo compartido, entendiéndose como la política que permitía que los estudiantes pudieran correr sus programas escritos mediante las tarjetas perforadas ya sea en Fortran o en Cobol.

Para nuestro comprender, es importante resaltar en la historia del software, los impactos que se dieron en la sociedad por visiones como las de McCarthy, a quien damos nuevamente nuestra gratitud por su trabajo.

Reminiscencias sobre la teoría del tiempo compartido

Traducción al español de este artículo.

John McCarthy, Universidad de Stanford

1983 invierno o primavera

Recuerdo que pensé en tiempo compartido en el momento de mi primer contacto con las computadoras y me sorprendió que ese no fuera el objetivo de IBM y de todos los demás fabricantes y usuarios de computadoras. Esto podría haber sido alrededor de 1955.

Por tiempo compartido, me refiero a un sistema operativo que permite a cada usuario de una computadora comportarse como si tuviera el control exclusivo de una computadora, no necesariamente idéntica a la máquina en la que se ejecuta el sistema operativo. Christopher Strachey bien pudo haber tenido razón al decir en su carta a Donald Knuth que el término ya se usaba para el tiempo compartido entre programas escritos para ejecutarse juntos. Esta idea ya se había utilizado en el sistema SAGE.  No sé cómo se implementó este tipo de tiempo compartido en SAGE. ¿Cada programa tenía que asegurarse de volver a un programa de sondeo de entrada o hubo interrupciones? ¿Quién inventó las interrupciones de todos modos? Pensé en ellos, pero no creo que le mencioné la idea a nadie antes de escucharlo de otras fuentes.

Mis primeros intentos de hacer algo sobre el tiempo compartido fueron en el otoño de 1957 cuando llegué al Centro de Computación del MIT con una beca de la Fundación Sloan de Dartmouth College. Inmediatamente me quedó claro que el tiempo compartido del IBM 704 requeriría algún tipo de sistema de interrupción. Era muy tímido para proponer modificaciones de hardware, especialmente porque no entendía la electrónica lo suficientemente bien como para leer los diagramas lógicos. Por lo tanto, propuse la mínima modificación de hardware que se me ocurrió. Esto implicó instalar un relé para que el 704 pudiera ponerse en modo de captura mediante una señal externa. También se propuso conectar los interruptores de detección de la computadora en paralelo con relés que pudieran ser operados por un Flexowriter (una especie de teletipo basado en una máquina de escribir IBM).

Cuando la máquina entraba en modo de captura, la próxima vez que la máquina intentaba ejecutar una instrucción de salto (entonces llamada transferencia) se producía una interrupción en una ubicación fija. La interrupción ocurriría cuando el Flexowriter hubiera configurado un carácter en un búfer de relé. El programa de interrupción leería entonces el carácter de los interruptores de detección dentro de un búfer, probaría si el búfer estaba lleno y, en caso contrario, volvería al programa interrumpido. Si el búfer estaba lleno, el programa almacenaría el programa actual en el tambor y leería un programa para manejar el búfer.

Se acordó (creo que hablé solo con Dean Arden) para instalar el equipo y creo que se obtuvo permiso de IBM para modificar la computadora. Se logró que el conector que se instalará en la computadora.

Sin embargo, en este momento nos enteramos del "paquete en tiempo real" para el IBM 704. Este RPQ (solicitud de cotización de precio era la jerga de IBM para una modificación de la computadora cuyo precio no estaba garantizado), que se alquilaba por $ 2,500 por mes ha sido desarrollado a petición de Boeing con el fin de permitir que el 704 acepte información de un túnel de viento. Habría estado involucrado algún elemento del tiempo compartido ordinario, pero no buscamos contacto con Boeing. De todos modos se acordó que el paquete de tiempo real, que implicaba la posibilidad de interrumpir después de cualquier instrucción, sería mucho mejor que simplemente poner la máquina en modo de captura. Por lo tanto, nos comprometimos a suplicar a IBM por el paquete en tiempo real. La reacción inicial de IBM fue favorable, sin embargo, tomó mucho más tiempo el obtener el paquete de tiempo real, quizás un año o dos.

Luego se acordó que alguien, tal vez Arnold Siegel, diseñaría el hardware para conectar un Flexowriter a la computadora y luego se diseñaría una instalación con tres de ellos. Siegel diseñó y construyó el equipo, el sistema operativo se modificó adecuadamente (no recuerdo quién lo hizo) y se llevó a cabo una demostración de LISP en línea para una reunión de Afiliados Industriales del MIT. Esta demostración que planifiqué y realicé, tenía al público en una sala de conferencias del cuarto piso y a mí en la sala de computadoras y en un sistema de televisión de circuito cerrado alquilado. Steve Russell, que trabajaba para mí, organizó los detalles prácticos, incluido un ensayo. 

Esta demostración se denominó robo de tiempo y se consideró como un mero preludio de un tiempo compartido adecuado. Se trataba de un programa fijo en la parte inferior de la memoria que recopilaba caracteres del Flexowriter en un búfer mientras se ejecutaba un trabajo por lotes normal.  Solo después de ejecutar cada trabajo, un trabajo que se ocuparía de leer desde el tambor los caracteres introducidos. este trabajo haría lo que pudiera, hasta que se quisieran más entradas y luego dejaría que el sistema operativo regresara al flujo por lotes. Esto funcionó para la demostración, porque a ciertas horas, el Centro de Computación del MIT operaba un flujo por lotes con un límite de tiempo de un minuto en cualquier trabajo. 

En el momento de esta demostración, Herbert Teager llegó al MIT como profesor asistente de Ingeniería Eléctrica y expresó interés en el proyecto de tiempo compartido. Algunas de las ideas sobre el tiempo compartido se superponían a algunas ideas que había tenido en su trabajo anterior, pero no recuerdo cuáles eran. Philip Morse, el director del Centro de Computación, me preguntó si estaba de acuerdo en entregar el proyecto de tiempo compartido a Teager, ya que la inteligencia artificial era mi principal interés. Estuve de acuerdo con esto y Teager se comprometió a diseñar los tres sistemas Flexowriter. No estoy seguro de que alguna vez se haya completado. Se presentó una propuesta de apoyo de tiempo compartido a NSF y se obtuvo dinero. No recuerdo si esto precedió a Teager y no, no recuerdo qué papel tuve yo en prepararlo o lo que él hizo después de su llegada. Este debería ser un documento importante, porque contendrá la concepción de ese año y la justificación del tiempo compartido.

Además de eso, se convenció a IBM para que hiciera modificaciones sustanciales en el IBM 7090 para instalarlo en el Centro de Computación del MIT. Estas incluyeron protección y reubicación de la memoria y 32,768 palabras adicionales de memoria para el sistema de tiempo compartido. Teager fue el principal especificador de estas modificaciones. Recuerdo mi sorpresa cuando IBM aceptó sus propuestas. Supuse que la reubicación y la protección de la memoria ralentizarían enormemente el direccionamiento de la computadora, pero resultó no ser el caso.

Los planes de Teager para tiempo compartido eran ambiciosos y, a muchos de nosotros, nos pareció vago. Por lo tanto, Corbato adoptó una solución "provisional" utilizando parte del apoyo que se había obtenido de NSF para el trabajo de tiempo compartido. Este sistema se demostró en algún momento de 1962, pero no se puso en funcionamiento con regularidad. Eso no fue realmente posible hasta que el soporte de ARPA para el proyecto MAC permitió comprar un IBM 7090 por separado.

Alrededor de 1960 comencé a consultar en BBN sobre inteligencia artificial y expliqué mis ideas sobre el tiempo compartido a Ed Fredkin y JCR Licklider. Fredkin, para mi sorpresa, propuso que el tiempo compartido era factible en la computadora PDP-1. Esta fue la primera computadora de DEC y BBN tenía el prototipo. Fredkin diseñó la arquitectura de un sistema de interrupción y diseñó un sistema de control para el tambor para permitir su uso en un modo de intercambio muy eficiente. Convenció a Ben Gurley, el ingeniero jefe de DEC, para que construyera este equipo. Se planeó pedir apoyo a los NIH, debido a las posibles aplicaciones médicas de las computadoras de tiempo compartido, pero antes de que se pudiera escribir la propuesta, Fredkin dejó BBN. Me hice cargo técnico del proyecto como consultor de un día a la semana, y Sheldon Boilen fue contratado para hacer la programación. Rediseñé el sistema de extensión de memoria propuesto por DEC y los convencí de que construyeran el sistema modificado en lugar de los dos sistemas que ofrecían, pero que afortunadamente no habían construido. También supervisé a Boilen.

Poco después de que se emprendiera este proyecto, DEC decidió entregar un PDP-1 al Departamento de Ingeniería Eléctrica del MIT. Bajo el liderazgo de Jack Dennis, esta computadora se instaló en la misma habitación que la computadora transistorizada experimental TX-0 que se había retirado del Laboratorio Lincoln cuando se construyó la TX-2. Dennis y sus alumnos se comprometieron a crear un sistema de tiempo compartido. El equipo era similar, pero se les dio menos memoria que la que tenía el proyecto BBN. No hubo mucha colaboración.

Lo que recuerdo es que el proyecto BBN se terminó primero en el verano de 1962, pero quizás Corbato recuerde demostraciones anteriores de CTSS. Me fui a Stanford en el otoño de 1962, y no había visto CTSS, y creo que tampoco había visto funcionar el sistema de Dennis. BBN no operó el primer sistema y ni siquiera corrigió los errores. Tenían pocos usuarios de computadoras y estaban contentos de continuar con el sistema mediante el cual los usuarios se registraban para toda la computadora. Realmente emprendieron un proyecto de seguimiento mucho más grande que involucraba un PDP-1 de tiempo compartido que se instaló en el Hospital General de Massachusetts, donde no fue un éxito. La computadora era inadecuada, había errores de hardware y software, y faltaban programas de aplicación, pero principalmente el proyecto fue prematuro.

Al mismo tiempo que se desarrollaban CTSS, el sistema BBN y los sistemas del Departamento de EE, el MIT había comenzado a planificar un sistema informático de próxima generación. La dirección del MIT evidentemente comenzó esto como un ejercicio ordinario de planificación universitaria y nombró un comité de alto nivel formado por Philip Morse, Albert Hill y Robert Fano para supervisar el esfuerzo. Sin embargo, los científicos informáticos reales estaban convencidos de que era necesaria una revolución en la forma en que se usaban las computadoras, en el tiempo compartido. El comité de nivel inferior estaba presidido por Teager, pero después de que sus ideas chocaran con las de todos los demás, el comité se reconstituyó conmigo como presidente. El desacuerdo se centró en cuán ambicioso ser y si optar por una solución provisional. Teager quería ser muy ambicioso, pero el resto de nosotros pensamos que sus ideas eran vagas y quería que el MIT adquiriera una computadora IBM 7030 (Stretch) como solución provisional. Al final resultó que, adquirir un Stretch habría sido una buena idea.

Nuestro segundo informe al MIT propuso que el MIT envíe una solicitud de propuestas a los fabricantes de computadoras. Sobre la base de las respuestas, luego pediríamos el dinero al Gobierno. La RFP se redactó, pero el MIT se estancó quizás por dos razones. La primera razón fue que nuestras estimaciones de costos iniciales eran muy grandes por razones de conservadurismo. En segundo lugar, IBM le pidió al MIT que esperara y dijo que haría una propuesta para satisfacer las necesidades del MIT a un costo mínimo o nulo. Desafortunadamente, el diseño de 360 ​​tomó más tiempo de lo esperado por la gerencia de IBM, y durante ese tiempo, las relaciones entre MIT e IBM se volvieron muy tensas debido a la demanda de patente sobre la invención de la memoria de núcleo magnético.

Como parte del puesto, el presidente Stratton propuso un nuevo estudio con un estudio de mercado más completo para establecer la demanda de tiempo compartido entre los usuarios de computadoras del MIT. Consideraba que esto era análogo a tratar de establecer la necesidad de palas de vapor mediante estudios de mercado entre los excavadores de zanjas y no quería hacerlo. Aproximadamente en ese momento George Forsythe me invitó a regresar a Stanford con la intención de construir un Departamento de Ciencias de la Computación, y estaba feliz de regresar a California.

En todo esto, no hubo mucha publicación. Escribí una nota a Morse con fecha del 1 de enero de 1959 proponiendo que compartiéramos nuestro esperado "IBM 709 transistorizado". Se ha sugerido que la fecha era errónea y debería haber sido 1960. No recuerdo ahora, pero creo que si el memo se hubiera escrito a fines de 1959, se habría referido al 7090, porque ese nombre para entonces estaba vigente. En ese memo, dije que la idea de compartir el tiempo no era especialmente nueva. No sé por qué dije eso, excepto que no quería molestarme en distinguirlo de lo que se hacía en el sistema SAGE con el que no estaba muy familiarizado.

La mayor parte de mi argumentación a favor del tiempo compartido fue oral, y cuando me quejé de que Fano y Corbato atribuían a Strachey el tiempo compartido en su artículo de 1966 en Scientific American, Corbato se sorprendió al encontrar mi memo de 1959 en los archivos. Su corrección en Scientific American fue incorrecta, porque supusieron que Strachey y yo habíamos desarrollado la idea de forma independiente, mientras que dar a cada usuario acceso continuo a la máquina no era idea de Strachey en absoluto. De hecho, ni siquiera le gustó la idea cuando se enteró.

Teager y yo preparamos un resumen conjunto para una reunión de ACM poco después de su llegada, y di una conferencia en una serie del MIT llamada Management and the Computer of the Future. En esta conferencia me referí al artículo de Strachey "Tiempo compartido de grandes computadoras rápidas" presentado en el Congreso IFIP de 1959 en París. Había leído el periódico descuidadamente y supuse que quería decir lo mismo que yo. Como señaló posteriormente, se refería a algo bastante diferente que no involucraba a un gran número de usuarios, cada uno comportándose como si tuviera una máquina para él solo. Según recuerdo, se refirió principalmente a los programas fijos, algunos de los cuales estaban ligados al cálculo y otros ligados a la entrada-salida. Mencionó la depuración como una de las actividades de tiempo compartido, pero creo que su concepto involucró a una persona depurando mientras que los otros trabajos eran del tipo convencional.

Mi memorando de 1959 anunciaba que los usuarios generalmente obtendrían la ventaja de la depuración en línea. Sin embargo, no dijo nada sobre cuántas terminales se necesitarían y dónde se ubicarían. Creo que los imaginaba numerosos y en las oficinas de los usuarios, pero no puedo estar seguro. Hacer referencia a un "intercambio" sugiere que tenía en mente muchos terminales. Ahora no puedo imaginar cuál fue el efecto en el lector de mi incapacidad para ser explícito sobre este punto. Me temo que estaba tratando de minimizar la dificultad del proyecto.

El principal error técnico de mis ideas de 1959 fue una subestimación de la capacidad informática necesaria para compartir el tiempo. Todavía no entiendo a dónde va todo el tiempo de la computadora en las instalaciones de tiempo compartido, y nadie más lo sabe.

Además de la propuesta NSF del MIT, debería haber algunas cartas a IBM y tal vez algunos documentos internos de IBM sobre la propuesta, ya que pusieron más de un millón de dólares en equipos. Gordon Bell habla de que DEC está tomando el tiempo compartido en el libro de Bell y Newell, pero no recuerdo que hablen del papel de Ben Gurley. Fredkin y quizás Alan Kotok lo sabrían.

Después de llegar a Stanford en 1962, organicé otro proyecto de tiempo compartido PDP-1. Este fue el primer sistema de tiempo compartido basado en terminales de pantalla. Se usó hasta 1969 o 1970 para el trabajo de Suppes sobre instrucción asistida por computadora. [Nota de 1994: luego fue donado al Instituto Indio de Tecnología en Kanpur, donde se utilizó durante unos 10 años].

No hay comentarios: