The making of UNIX Operating System
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://cm.bell-labs.com/cm/cs/who/dmr/hist.html , 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.
