Main index

Introducing UNIX and Linux


The Computing Environment

Overview
What is a Computer?
Hardware
      Processors
      Input Devices
      Output Devices
Software
      Input and Characters
            Control Characters
      Application Programs
            Programming Languages
      The Operating System
      System Administration
History of UNIX and Linux
Conventions
Summary

History of UNIX and Linux

The first UNIX system was built at Bell Labs, the research division of the US telephone corporation AT&T, in 1969. Prior to that date, Bell (together with General Electric and MIT) had been engaged in developing a large-scale operating system, known as 'Multics'. This collaboration between industry and the academic community had begun in 1964, but five years later it became clear that the three participants had different goals for the project. By this time a vast amount of work had gone into Multics, but more needed to be done for it to fulfil the aspirations of any of the participants. Accordingly, Bell Labs pulled out of the project.

Faced without a state-of-the-art operating system with which to work, a number of researchers at Bell, led by Ken Thompson and Dennis Ritchie, decided to create a new operating system 'from scratch'. Multics had become complex, and it was felt that a much simpler system was needed - the name 'UNIX' arose to emphasise that difference between it and Multics. The experience gained during the development of Multics contributed much to the design of UNIX.

A number of fundamental design decisions that were taken pervade the whole of UNIX. Programs written for UNIX should be simple, and should each do a single task well. This was different to the style adopted in some other operating systems, where large programs would be developed with many different capabilities, and would be commensurately complex. Also, programs should be designed so that they could easily be linked together, the output from one becoming the input to another. Thus it would be possible to build more complex programs by joining simple ones together.

Part of the philosophy underlying the design of UNIX was that the core system software, or kernel, should be as small as possible, and only perform those functions that are absolutely necessary - all other tasks should be the responsibility of the shell. At the same time as UNIX was being written, the language C was being designed, and in 1973 a UNIX kernel was written using C. C is a high-level language, and as such is machine-independent, so the new (small) kernel and shell could be transferred to a different machine easily. This was found to work well, and Bell Labs was happy to allow the source code for the kernel to be distributed to universities.

In the next few years, work on UNIX was undertaken principally by Bell Labs and by the University of California at Berkeley. These two organisations, however, developed their own versions of UNIX, known respectively as System V and BSD (Berkeley System Distribution). Industrial users tended to use System V, whereas BSD UNIX was common in universities and colleges.

By the late 1980s UNIX had been implemented by many manufacturers, each of whom had developed versions which, although based either on System V or on BSD, had their own features. It became apparent that the popularity of UNIX, coupled with the proliferation of 'dialects', had resulted in a pressing need for a recognised standard for UNIX to be developed. This was taken on board by the IEEE (Institute of Electric al and Electronic Engineers, Inc.) under the name POSIX. POSIX consists of a number of interrelated standards. Now part of the PASC (Portable Application Standards Committee) project, there are more than 9 proposed POSIX standards, but not all are yet completed. In this book we only deal with POSIX.2 since the other standards are not necessary for understanding the UNIX shell.

In 1991, a computer science student at the University of Helsinki in Finland, Linus Torvalds, decided to create his own version of UNIX, which he named Linux. It was in 1994 that he released version 1.0 of Linux. Very quickly it became clear that Torvalds alone would not be able to develop a complete operating system, so he chose to open up his project to allow others to contribute to its development. On the Internet, Torvalds announced his project and called for volunteers to assist; in doing so, the source code was made freely available.

As a result of this model of allowing developers from around the world to contribute to the development of Linux, a Linux community was born, and has now grown to millions of users, numerous different Linux distributions, and over a hundred developers just for the Linux kernel. It is now an effective and successful operating system that competes on many platforms with commercial offerings. The latest version at the time of writing is version 2.4.


Copyright © 2002 Mike Joy, Stephen Jarvis and Michael Luck