Most technologists are familiar with the outlines of the Unix origin story. This talk examines what happened before Unix. Where did the concept of time-sharing come from? What were early implementations of the ideas? How did they influence Unix?
a flight simulator to train new pilots. Team started with an analog computer (but it was too slow and unreliable) Inspired by ENIAC, decided to work on an electronic digital computer Parallel digital computer (20,000 ops/second) in 1952 Design goal of 50,000 ops/second Memory system was too slow.
Sequential access. Bits are represented by sound waves in a medium (usually mercury) which are constantly regenerated and recirculated Highly temperature sensitive (40C/100F)
Set an electrostatic charge on a field of phosphors. Each lasted about 1 month and cost $1,000. ($10,000 in 2016 dollars) Each tube could store 1 bit.
a computer to behave as though he were in sole control of a computer, not necessarily identical with the machine on which the operating system is running.” John McCarthy, 1983 [2]
and run through a secondary system to magnetic tape. The tape would be run through the primary system one after another serially. Output would go to a line printer or another magnetic tape, then printed later Made developing software very difficult, as one single error would most likely cause an entire run to be wasted. Could take hours or days to try again.
solve general problems and… most of the computer time would be spent running these standard programs with new sets of data… The actual situation is much closer to the opposite extreme.” John McCarthy, 1959 [4]
was just another thing. At least initially, he did not see it as revolutionary. The appreciation of timesharing was directly proportional to the amount one personally programmed. The more you personally programmed, the more you knew what it meant…” Fernando Corbato, 1990 [3]
modifying MIT’s IBM 704 to use interrupts to process user input. MIT asks IBM to modify its installation with its “real time package” developed for Boeing to process wind-tunnel data. 1957 1960 1959
McCarthy demonstrates interactive LISP session with a flexowriter terminal. Hebert Teager joins MIT, takes over time-sharing project from McCarthy. Teager’s proposals do not convince his colleagues. McCarthy calls his ideas “vague” and “ambitious.”[2] Prof. Christopher Strachey publishes a paper entitled “Time Sharing in Large, Fast Computers” for the IFIP conference in Paris. The paper mainly deals with the idea of “multi-programming” (aka concurrency) not McCarthy’s idea of a “virtual computer.” 1957 1960 1959
Explains his ideas about timesharing to several principals (including J.C.R. Licklider) and engineers at Digital Equipment (DEC). DEC donates a PDP-1 to MIT to work on a timesharing system by Jack Dennis and his students. 1957 1960 1959
work on a prototype time sharing system using Teager’s 3 modified flexowriter terminals. This programming effort is led by a young post-doc named Fernando Corbato. A time-sharing system is demonstrated in primitive form by Corbato. [8] 1957 1960 1959 1961
that comes to be known as CTSS (Compatible Time Sharing System) in 1962. It enters regular production usage in 1963. [3] McCarthy leaves MIT and goes to Stanford. 1957 1960 1959 1961 1962
BA Physics, Cal Tech, 1950 PhD Physics MIT, 1956 Post-doc working on Whirlwind Joined Computation Center as its Asst. Deputy Director, 1957 Lead designer on Multics, lead programmer on CTSS ACM Turing Award 1990
709. The timesharing supervisor ran in core and in the background, other batch oriented jobs could be executed (as they had always done.) In this way the time-sharing system was “compatible” with the batch jobs already available.
included Marjorie Merwin-Daggett and Robert Daley. (See co-authors for [5].) Contemporary compilers of the day were 11-16,000 words (1 word is usually 18 bits) CTSS supervisor was 12,000 words + 6,000 words for command programs. [7] [11] has a great introduction how “everyday” users could interact with the system. (Commands included: login, input, edit, load, start) (This slide deck by itself is almost 100MB including all picture and videos.)
and other user’s programs from a user program) I/O device sharing/multiplexing Saving and restoring user program state between time slices (called “quanta” in [5]) Related problem: how much time does a user get? “Satisfactory” computer responsiveness [5] (200 ms is suggested.)
storage of programs and data.” “Remote operation became the norm.” “[CTSS] suddenly made it especially convenient for users to share and exchange information among themselves.“ [8]
critical to the success of time-sharing. The previous generation of vacuum tubes was simply too unreliable for sustained real- time operation…” Fernando Corbato, 1990 [8]
jobs] were suddenly restless when response times were more than a second.” “A one-level file system, suddenly began to chafe.” “The more we did, the more users wanted.” [8]
”do timesharing right” [3] CTSS had a simple design and the popularity of it did not scale well. The team of MIT spent a significant amount of time finding industrial partners for a new timesharing hardware and software platform. (GE and Bell Telephone Labs)
Privilege “rings” around the supervisor (protect memory access), Virtual memory system (including the idea of “swap”), Mapping files to virtual memory, Hardware system could be composed of multiple CPUs, RAM and storage devices. Wrote the system in a high level language (PL/I) [8,10]
came from three different organizations (MIT, GE/Honeywell, Bell Telephone Lab) with different priorities and goals. There was no BDFL – weak ideas had to be “proven” weak – teams might spend months or weeks working on an idea only to abandon it. The design was often unnecessarily complex. No one had ever tried to design an operating system like this before. There was no full featured functional PL/I compiler until 1967. PL/I itself had good design ideas and really bad design ideas. (You might call it the Javascript of its day: ubiquitous with many traps.)
discovered that we had built a monster. We had several instances of that inside Multics…Yes, one of the problems was that we were all kind of young and naïve. We couldn’t see that we had built something that was too complicated. Only under the duress of realizing it was awful did we dig in and realize it didn’t have to be that way.” - Fernando Corbato, 2006 [12]
which I think is the major factor that people underestimate and a huge amount of... the difference between engineering projects to me is the degree that the participants have done it before. If they have done it before it's a piece of cake sometimes; if they have never done it before it can be a hellish adventure.” - Fernando Corbato, 1990 [3]
use to design a system. But our first conviction was we absolutely had to have a compiler language. And I think that one was still dead right. The next problem was that we wanted one that was relatively advanced and flexible and there weren't many choices in those days. And the third key ingredient was that Doug McIlroy and Bob Morris at Bell Labs, who had considerable language expertise and who wanted to take responsibility for the language effort, were quite persuaded that PL-1 was a good choice.” - Fernando Corbato, 1990 [3]
name was a joke…[Thompson’s] strategy was clear– Start small and build up the ideas one by one as he saw how to implement them well. As we all know, Unix has evolved and become immensely successful.” - Fernando Corbato, 1990 [8]
I Computer, Review of Electronic Digital Computers, Joint Computers American Institute of Electrical Engineers- Institute of Radio Engineers Conference, pp. 70-74, February, 1952. [2]: J. McCarthy: Reminiscences on the History of Timesharing, http://www- formal.stanford.edu/jmc/history/timesharing/timesharing.html [3]: A. Norberg: Oral history of Fernando Corbato, Babbage Institute, University of Minnesota, 1990. http://hdl.handle.net/11299/107230 [4]: J. McCarthy: A Time Sharing Operator Program for our Projected IBM 709, memorandum, 1959. http://www-formal.stanford.edu/jmc/history/timesharing-memo.html
Proceedings of the SJCC 1962. http://larch-www.lcs.mit.edu:8001/~corbato/sjcc62/ [6]: Timesharing: A solution to computer bottlenecks, 1963. https://www.youtube.com/watch?v=Q07PhW5sCEk [7]: Saltzer, J.H.: CTSS Technical Notes, 1966, Project MAC Technical Report TR-16. [8]: Corbato, F.J.: On Building Systems that Will Fail (1990 Turing Award Lecture), Communications of the ACM, September 1991, p72-83. [9]: Van Vleck, T: The IBM 7094 and CTSS, http://www.multicians.org/thvv/7094.html
World. Invited Talk SOSP14, 1993. [11]: Corbato, F.J., et al.: CTSS Programmers Guide, MIT Press, 1963. [12]: Webber, S: Oral History of Fernando Corbato, Computer History Museum, 2006. [13]: Norberg, A.: Oral History of Jules Schwartz, Babbage Institute, University of Minnesota, 1989. [14]: Bull, G.M.: The Dartmouth Time Sharing System, Elias Horwood Publishers, 1980.
Time-Sharing System, Proceedings of the IEEE, December 1966, p1766-1774. [16]: Bobrow, D.G. et al: TENEX, A Paged Time Sharing System for the PDP-10, Communications of the ACM, March 1972, p135-143.