REMINISCENCES ON THE HISTORY OF TIME SHARING
Next: About this document
REMINISCENCES ON THE HISTORY OF TIME SHARING
John McCarthy, Stanford University
1983 Winter or Spring
I remember thinking about time-sharing about the time of<br>my first contact with computers and being surprised that this wasn't<br>the goal of IBM and all the other manufacturers and users of computers.<br>This might have been around 1955.
By time-sharing, I meant an operating system that permits each<br>user of a computer to behave as though he were in sole control of a<br>computer, not necessarily identical with the machine on which the<br>operating system is running. Christopher Strachey may well have been<br>correct in saying in his letter to Donald Knuth that the term was already<br>in use for time-sharing among programs written to run together. This idea<br>had already been used in the SAGE system. I don't know how this kind of<br>time-sharing was implemented in SAGE. Did each program have to be sure to<br>return to an input polling program or were there interrupts? Who invented<br>interrupts anyway? I thought of them, but I don't believe I mentioned the<br>idea to anyone before I heard of them from other sources.
My first attempts to do something about time-sharing was in the<br>Fall of 1957 when I came to the M.I.T. Computation Center on a Sloan<br>Foundation fellowship from Dartmouth College. It was immediately clear to<br>me that the time-sharing the IBM 704 would require some kind of interrupt<br>system. I was very shy of proposing hardware modifications, especially as<br>I didn't understand electronics well enough to read the logic diagrams.<br>Therefore, I proposed the minimal hardware modification I could think of.<br>This involved installing a relay so that the 704 could be put into<br>trapping mode by an external signal. It was also proposed to connect the<br>sense switches on the ccnsole in parallel with relays that could be<br>operated by a Flexowriter (a kind of teletype based on an IBM typewriter).
When the machine went into trapping mode,<br>an interrupt to a fixed location would occur the next time the<br>machine attempted to execute a jump instruction (then called a<br>transfer). The interrupt would occur when the Flexowriter had<br>set up a character in a relay buffer. The interrupt program would<br>then read the character from the sense switches into a buffer,<br>test whether the buffer was full, and if not return to the<br>interrupted program. If the buffer was full, the program would<br>store the current program on the drum and read in a program to<br>deal with the buffer.
It was agreed (I think I talked to Dean Arden only.) to install the<br>equipment, and I believe that permission was obtained from IBM<br>to modify the computer. The connector to be installed in the<br>computer was obtained.
However, at this time we heard about<br>the "real time package" for the IBM 704. This RPQ (request<br>for price quotation was IBM jargon for a modification to<br>the computer whose price wasn't guaranteed),<br>which rented for $2,500 per month had been<br>developed at the request of Boeing for the purpose of allowing<br>the 704 to accept information from a wind tunnel. Some element<br>of ordinary time-sharing would have been involved, but we did not seek<br>contact with Boeing. Anyway it was agreed that the real time<br>package, which involved the possibility of interrupting after<br>any instruction, would be much better than merely putting<br>the machine in trapping mode. Therefore we undertook to beg<br>IBM for the real time package. IBM's initial reaction was<br>favorable, but nevertheless it took a long time to get the<br>real time package - perhaps a year, perhaps two.
It was then agreed that someone, perhaps Arnold Siegel,<br>would design the hardware to connect one Flexowriter to the<br>computer, and later an installation with three would be designed.<br>Siegel designed and build the equipment, the operating system<br>was suitably modified (I don't remember by whom), and demonstration<br>of on-line LISP was held for a meeting of the M.I.T. Industrial<br>Affiliates. This demonstration, which I planned and carried out,<br>had the audience in a fourth floor lecture room and me in the<br>computer room and a rented closed circuit TV system. Steve<br>Russell, who worked for me, organized the practical details including<br>a rehearsal. This demonstration was called time-stealing,<br>and was regarded as a mere prelude to proper time-sharing.<br>It involved a fixed program in the bottom of memory that collected<br>characters from the Flexowriter in a buffer while an ordinary batch<br>job was running. It was only after each job was run that a job<br>that would deal with the characters typed in would be read in<br>from the drum. This job would do what it could until more<br>input was wanted and would then let the operating system go<br>back to the batch stream. This worked for the demonstration,<br>because at certain hours, the M.I.T. Computation Center operated<br>at certain hours a batch stream with a time limit of one minute on any job.
Around the time of this demonstration, Herbert<br>Teager came to M.I.T. as an...