The making of UNIX Operating System

Unix quotation by Thompson and Ritchie

THE EARLY DAYS

CTSS

Compatible Time-Sharing System, CTSS, was developed at MIT under Project MAC. It was one of the first time-sharing operating systems, demonstrated in 1961 and was in use till 1973. CTSS was used on IBM 7094 and was "compatible" with standard batch processing OS for 7094, the Fortran Monitoring System (FMS); it ran a copy of FMS in background. CTSS had an impact on operating systems research as showed the feasibility of time-sharing. It also provided text formatting utilities, electronic mail and execution of commands in a batch file.

MULTICS

The success of time-sharing operating systems like CTSS influenced the development of Multics, Multiplexed Information and Computing Service. Multics project was a joint attempt by General Electric, Bell Telephone Laboratories (BTL) and MIT to make an operating system for large computers with highly ambitious goals in 1964. It was the time when operating systems research was progressing at a fast pace. Multics had a lot of novel ideas like single level store for data access, dynamic linking and computer security. Multics was a large project with multiple development agencies and, as with large projects, had its share of problems. As the project was large and new ideas were being tried, it was behind schedule and people began to have doubts whether the project objectives would be met. In retrospect, Multics completed successfully, and Multics installations were operational from 1969 to 2000. However, in 1969, BTL decided to withdraw from the project and GE's computer business including Multics was taken over by Honeywell in 1970.

THE BEGINNING

Even after BTL withdrew from the Multics project, Ken Thompson continued to work on it on a GE - 645 computer. Thompson was also working on Space Travel game, which involved simulation of heavenly bodies in motion and landing of spacecrafts on these planets and their moons. But the system just could not provide the performance desired. The necessity of a simple and efficient operating system was felt. Thompson, along with Dennis Ritchie and Rudd Canaday, began to work on a design of a bare-bones operating system. They chose a less-used PDP-7 computer with good display capabilities and started with re-writing the Space Travel game in assembly to run on it. The game was cross-assembled on GECOS (General Electric Comprehensive Operating System) on Honeywell 635 for the PDP-7.

Encouraged by good results, Thompson began implementing a file system for PDP-7. Soon there was a kernel, shell and an assembler developed. With the development of assembler, cross-compilation was no longer necessary and the PDP-7 became self-sufficient. The operating system was known as UNiplexed Information and Computing Service (UNICS), which was a pun on Multics. It was a matter of time for UNICS to become a shortened and more pronounceable UNIX. The system gained popularity in BTL and more people joined the development efforts. Doug McIlroy implemented TMG, a compiler writing system, on the PDP-7. Using TMG, Thompson tried to write a compiler for FORTRAN. Instead of FORTRAN, a definition of 'B' language was developed, 'B' was a derivative of BPCL, Basic Combined Programming Language. Thus 'B' became the first high level language to be used under Unix.

GAINING MOMENTUM

J. F. Ossanna proposed development of text processing utilities on the new system and helped in getting funds from the BTL management for the Unix team. The team got the computer for development of text processing system but actually they were doing work of a different order of magnitude - development of an operating system. A PDP-11/20 was obtained for development of text processing system and Ritchie and Thompson ported the nascent operating system to the PDP-11/20. Thompson developed the text editor ed for the newly implementation. McIlroy had developed roff in BPCL earlier which was used for text processing on the system. Thus the system could provide the basic text processing capabilities, as committed to the management. The effort was deemed successful so that a further grant to purchase new PDP-11/45 computer was given.

The coming of PDP-11/45 gave a boost to the development of Unix. Ritchie worked on further development of 'B' language, adding more features to it. A new language 'C' was born. Ritchie and Thompson rewrote most of the kernel in the 'C' language. This was a pioneering act and led to more stability and portability to the operating system. More and more people started using and contributing to the system at BTL. Bob Morris did the development of date related software, mathematical functions and the security system. McIlroy and Thompson invented the pipe mechanism. It was a breakthrough and led to the Unix philosophy of designing programs that did one thing well and combining them using pipes to do a bigger job. Along with this concepts the earlier ideas of input and output text files, redirection became prominent. Unix tools became popular as programs that did a specialized job and did that well. Unix tools became synonymous with software tools, an area where Brian Kernighan made notable contributions.

THE GROWTH OF UNIX AND CONTRIBUTIONS

The first paper The Unix Time-Sharing System was presented by Thompson in October 1973 [6]. It was published in the Communications of the ACM in July 1974. The response was tremendous. As per the US anti-trust laws, AT&T could not (or did not) pursue Unix as a business activity [2]; its charter was to concentrate on providing telephone services. So AT&T licensed Unix to universities. It was here that Unix was pursued actively and the system installations grew at an exponential rate. The system also grew and more tools were added. Steve Bourne, with ideas from John Mashey, made the programmable shell. The filter sed was developed by Lee MacMohan, using ed as a base. The popular pattern scanning and processing language, awk, was developed by Al Aho, Peter Weinberger and Brian Kernighan. File comparison program diff came from Doug McIlroy. For software version control, Source Code Control System (SCCS) was developed by Marc Rochkind. The debuggers adb and sdb were written by Steve Bourne and Howard Katseff respectively and lint was from Steve Johnson. The standard I/O library was designed by Ritchie after Mike Lesk's portable I/O library. The program building tool, make was developed by Stu Feldman. The compiler development tools, yacc was developed by Steve Johnson and lex was from Like Lesk. The documentation tool troff was written by Joe Ossanna based on RUNOFF written by J. E. Saltzer for CTSS. The supporting ms macro package, tbl and refer were from Mike Lesk.

THE AWARDS

As Unix became a phenomenal success, the authors were honored with awards. Thompson and Ritchie were awarded the prestigious ACM Turing award in 1983. The selection committee observed: The success of the UNIX system stems form its tasteful selection of a few key ideas and their elegant implementation. The model of the UNIX system had led a generation of software designers to new ways of thinking about programming. The genius of the UNIX system is its framework, which enables programmers to stand on the work of others. Ritchie and Thompson also received the National Medal of Technology from President Clinton in April 1999.

THE SUCCESS STORY

Why did Unix become such a success? The most important point is that Unix was very much required at that time (late 70s - 80s). The operating systems at that time were bulky, slow and hard to use. Unix was intuitive, fast and easy to use. The commands were short, easy to type and with a host of options to get the desired results. So programmers could think and work fast and found the system to be very user-friendly. The system would help them with a rich set of tools. These tools were written with a common philosophy and style; they complemented each other well and presented the user (programmer) with a homogeneous system. Tired of using bulky systems with a discrete collection of commands, Unix was like a breadth of fresh air. As Thompson observed modestly in Turing award lecture, ... I can't help but feel that I am receiving this honor for timing and serendipity as much as technical merit.... The timing was just right for Unix during the 70s and 80s.

Ritchie and Thompson have given a host of reasons for the success of Unix [6]. It was not designed for any predefined objective. That led to the development of a general purpose operating system. Since it was designed as a fresh attempt, a small seminal operating system was developed around which more and more functionality could be built. Since the developers were programmers, they understood the requirements very well and designed a system that made it easy to write, test and run programs. The hardware was small in size and processing capability and the desire to make an fast operating system with a rich set of primitives led to a economy and elegance of design, a sort of salvation through suffering. The system right from the early stages could boot and provide a development and run time environment. Thus designers could use the system right from the inception and could see the errors and correct them right away.

Unix appears to be a case study of tremendous team work. Thompson has observed in Reflections ... [8] regarding Ritchie: ... Our collaboration has been a thing of beauty. In the ten years that we have worked together, I can recall only one case of miscoordination of work. On that occasion, I discovered that we both had written the same 20-line assembly language program. I compared the sources and was astounded to find that they matched character for character. The result of our work together has been far greater than the work we each contributed..... Ritchie, in his Turing award lecture, Reflections on Software Research, has attributed the success, among other factors, to the calm, communicative and non-competitive environment at BTL. Thompson and Ritchie worked together and their colleagues at BTL appreciated their work, thought in the same direction and programmed with the same style. The result is a system whose fundamentals are the same even after more than thirty five years of initial design and development. The Unix success story again strengthens the belief that good teamwork is central to a software project's success (or for any project's success). If managements create conditions that improves teamwork, the gains on project progress would be tremendous.

References:

1. Dennis Ritchie, The Evolution of the Unix Time-sharing System, http://www.read.seas.harvard.edu/~kohler/class/aosref/ritchie84evolution.pdf , 1996.

2. Peter H. Salus, A Quarter Century of UNIX, Addison-Wesley. 1994.

3. Wikipedia, the free encyclopedia, CTSS, http://en.wikipedia.org/wiki/CTSS .

4. Multics History, http://www.multicians.org/history.html

5. Wikipedia, the free encyclopedia, UNIX, http://en.wikipedia.org/wiki/UNIX.

6. D. M. Ritchie and K. Thompson, The Unix Time-Sharing System, Bell System Technical Journal, Vol 57, No. 6, July - August 1978.

7. D. M. Ritchie, UNIX Time Sharing System: A Retrospective, Bell System Technical Journal, Vol 57, No. 6, July - August 1978.

8. Ken Thompson, Reflections on Trusting Trust, Turing Award Lecture, Communications of the ACM, Volume 27, Number 8, August 1984.

9. Dennis M. Ritchie, Reflections on Software Research, Turing Award Lecture, Communications of the ACM, Volume 27, Number 8, August 1984.

10. Brian W. Kernighan and Rob Pike, The Unix Programming Environment, Pearson Prentice Hall, 1984.