
Compatible Time-Sharing System

The Compatible Time-Sharing System (CTSS) was one of the first time-sharing operating systems; it was developed at the MIT Computation Center. CTSS was first demonstrated on MIT's IBM 709 in November 1961; service to MIT users began in the summer of 1963 and was operated until 1973. During part of this time, MIT's influential Project MAC also ran a CTSS service, but the system did not spread beyond these two sites.
CTSS was described in a paper presented at the 1962 Spring Joint Computer Conference, and greatly influenced the design of other early time-sharing systems.
Experimental Time-Sharing System.
John Backus said in the 1954 summer session at MIT that "By time sharing, a big computer could be used as several small ones; there would need to be a reading station for each user". Computers at that time, like IBM 704, were not powerful enough to implement such system, but at the end of 1958, MIT's Computation Center nevertheless added a typewriter input to its 704 with the intent that a programmer or operator could "obtain additional answers from the machine on a time-sharing basis with other programs using the machine simultaneously".
In June 1959, Christopher Strachey published a paper "Time Sharing in Large Fast Computers" at the UNESCO Information Processing Conference in Paris, where he envisaged a programmer debugging a program at a console (like a teletype) connected to the computer, while another program was running in the computer at the same time. Debugging programs was an important problem at that time, because with batch processing, it then often took a day from submitting a changed code, to getting the results. John McCarthy wrote a memo about that at MIT, after which a preliminary study committee and a working committee were established at MIT, to develop time sharing. The committees envisaged many users using the computer at the same time, decided the details of implementing such system at MIT, and started the development of the system.
By July, 1961 a few time sharing commands had become operational on the Computation Center's IBM 709, and in November 1961, Fernando J. Corbató demonstrated at MIT what was called the "Experimental Time-Sharing System". On May 3, 1962, F. J. Corbató, M. M. Daggett and R. C. Daley published a paper about that system at the Spring Joint Computer Conference. Robert C. Daley, Peter R. Bos and at least 6 other programmers implemented the operating system, partly based on the Fortran Monitor System. 
The system used an IBM 7090, modified by Herbert M. Teager, with added 3 Flexowriters for user consoles, and maybe a timer. Each of the 3 users had two tape units, one for the user's file directory, and one for dumping the core (program in memory). There was also one tape unit for the system commands, there were no disk drives. The memory was 27 k words (36-bit words) for users, and 5 k words for the supervisor (operating system). The input from the consoles was written to the buffers in the supervisor, by interrupts, and when a return character was received, the control was given to the supervisor, which dumped the running code to the tape and decided what to run next. The console commands implemented at the time were "login, logout, input, edit, fap, mad, madtrn, load, use, start, skippm, listf, printf, xdump" and "xundump". 
This became the initial version of the Compatible Time-Sharing System. This was apparently the first ever public demonstration of time-sharing; there are other claims, but they refer to special-purpose systems, or with no known papers published. The "compatibility" of CTSS was with background jobs run on the same computer, which generally used more of the compute resources than the time-sharing functions.
Implementation.
Kernel.
CTSS used a modified IBM 7090 mainframe computer that had two 32,768 (32K) 36-bit-word banks of core memory instead of the normal one. One bank was reserved for the time-sharing supervisory program, the other for user programs. CTSS had a protected-mode kernel, the supervisor's functions in the A-core (memory bank A) could be called only by software interrupts, like in the modern operating systems. Causing memory-protection interrupts were used for software interrupts. Processor allocation scheduling with a quantum time unit 200 ms, was controlled by a multilevel feedback queue. It also had some special memory-management hardware, a clock interrupt and the ability to trap certain instructions.
Programming languages.
CTSS at first had only an assembler FAP and a compiler MAD. Also, Fortran II code could be translated into a MAD code. Later half of the system was written in MAD. Later there were other programming languages like LISP and a version of ALGOL.
File system.
Each user had their own directory, and there were also shared directories for groups of people with the same "problem number". Each file had two names, the second indicating its type as did the extension in later system. At first, each file could have one of four modes: temporary, permanent, read-only class 1, and read-only class 2. Read-only class 1 allowed the user to change the mode of the file. Files could also be symbolically linked between directories. A directory listing by "listf":
 10 FILES 20 TRACKS USED
 DATE NAME MODE NO. TRACKS
 5/20/63 MAIN MAD P 15
 5/17/63 DPFA SYMTB P 1
 5/17/63 DPFA BSS P 1
 5/17/63 DPFA FAP P 2
Peripherals.
Input-output hardware was mostly standard IBM peripherals. These included six data channels connecting to:
Influences.
Multics, which was also developed by Project MAC, was started in the 1960s as a successor to CTSS – and in turn inspired the development of Unix in 1969. One of the technical terms inherited by these systems from CTSS is "daemon".
Incompatible Timesharing System (ITS), another early, revolutionary, and influential MIT time-sharing system, was produced by people who disagreed with the direction taken by CTSS, and later, Multics; the name was a parody of "CTSS", as later the name "Unix" was a parody of "Multics".