The first version of UNIX was developed in 1969 by Ken Thompson of the Research Group at Bell Laboratories to use an otherwise idle PDP-7. Thompson was soon joined by Dennis Ritchie and they, with other members of the Research Group, produced the early versions of UNIX. Ritchie had previously worked on the MULTICS project, and MULTICS had a strong influence on the newer operating system. Even the name UNIX is a pun on MULTICS. The basic organization of the file system, the idea of the command interpreter (or the shell) as a user process, the use of a separate process for each command, the original line-editing characters (# to erase the last character and @ to erase the entire line), and numerous other features came directly from MULTICS. Ideas from other operating systems, such as MIT’s CTSS and the XDS-940 system, were also used. Ritchie and Thompson worked quietly on UNIX for many years. They moved it to a PDP-11/20 for a second version; for a third version, they rewrote most of the operating system in the systems-programming language C, instead of the previously used assembly language. C was developed at Bell Laboratories to support UNIX. UNIX was also moved to larger PDP-11 models, such as the 11/45 and 11/70. Multiprogramming and other enhancements were added when it was rewritten in C and moved to systems (such as the 11/45) that had hardware support for multiprogramming. As UNIX developed, it became widely used within Bell Laboratories and gradually spread to a few universities. The first version widely available outside Bell Laboratories was Version 6, released in 1976. (The version number for early UNIX systems corresponds to the edition number of the UNIX Programmer’s Manual that was current when the distribution was made; the code and the manual were revised independently.) In 1978, Version 7 was distributed. This UNIX system ran on the PDP-11/70 and the Interdata 8/32 and is the ancestor of most modern UNIX systems. In particular, it was soon ported to other PDP-11 models and to the VAX computer line. The version available on the VAX was known as 32V. Research has continued since then.
UNIX Support Group
After the distribution of Version 7 in 1978, the UNIX Support Group (USG) assumed administrative control and responsibility from the Research Group for distributions of UNIX within AT&T, the parent organization for Bell Laboratories. UNIX was becoming a product, rather than simply a research tool. The Research Group continued to develop their own versions of UNIX, however, to support their internal computing.Version 8 included a facility called the stream I/O system, which allows flexible configuration of kernel IPC modules. It also contained RFS, a remote file system similar to Sun’s NFS. The current version is Version 10, released in 1989 and available only within Bell Laboratories. USG mainly provided support for UNIX within AT&T. The first external distribution from USG was System III, in 1982. System III incorporated features of Version 7 and 32V, as well as features of several UNIX systems developed by groups other than Research. For example, features of UNIX/RT, a real-time UNIX system, and numerous portions of the Programmer’sWork Bench (PWB) software tools package were included in System III. USG released System V in 1983; it is largely derived from System III. The divestiture of the various Bell operating companies from AT&T left AT&T in a position to market System V aggressively. USG was restructured as the UNIX System Development Laboratory (USDL), which released UNIX System V Release 2 (V.2) in 1984. UNIX System V Release 2, Version 4 (V.2.4) added a new implementation of virtual memory with copy-on-write paging and shared memory. USDL was in turn replaced by AT&T Information Systems (ATTIS), which distributed System V Release 3 (V.3) in 1987. V.3 adapts the V8 implementation of the stream I/O system and makes it available as STREAMS. It also includes RFS, the NFS-like remote file system mentioned earlier.
Berkeley Begins Development
The small size, modularity, and clean design of early UNIX systems led to UNIX based work at numerous other computer-science organizations, such as Rand, BBN, the University of Illinois, Harvard, Purdue, and DEC. The most influential of the non Bell Laboratories and non–AT&T UNIX development groups, however, has been the University of California at Berkeley. Bill Joy and Ozalp Babaoglu did the first Berkeley VAX UNIX work in 1978; they added virtual memory, demand paging, and page replacement to 32V to produce 3BSD UNIX. This version was the first to implement any of these facilities on a UNIX system. The large virtual-memory space of 3BSD allowed the development of very large programs, such as Berkeley’s own Franz LISP. The memory-management work convinced the Defense Advanced Research Projects Agency (DARPA) to fund Berkeley for the development of a standard UNIX system for government use; 4 BSD UNIX was the result. The 4 BSD work for DARPA was guided by a steering committee that included many notable people from the UNIX and networking communities. One of the goals of this project was to provide support for the DARPA Internet networking protocols (TCP/IP). This support was provided in a generalmanner. It is possible in 4.2 BSD to communicate uniformly among diverse network facilities, including local-area networks (such as Ethernets and token rings) and wide-area networks (such as NSFNET). This implementation was the most important reason for the current popularity of these protocols. It was used as the basis for the implementations ofmany vendors of UNIX computer systems, and even other operating systems. It permitted the Internet to grow from 60 connected networks in 1984 to more than 8,000 networks and an estimated 10 million users in 1993. In addition, Berkeley adapted many features fromcontemporary operating systems to improve the design and implementation of UNIX. Many of the terminal line-editing functions of the TENEX (TOPS-20) operating system were provided by a newterminal driver.Anewuser interface (theCShell), a newtext editor (ex/vi), compilers for Pascal and LISP, and many newsystems programs were written at Berkeley. For 4.2 BSD, certain efficiency improvements were inspired by the VMS operating system. UNIX software from Berkeley is released in Berkeley Software Distributions (BSD). It is convenient to refer to the Berkeley VAX UNIX systems following 3BSD as 4 BSD, but there were actually several specific releases, most notably 4.1 BSD and 4.2 BSD. The generic numbers BSD and 4 BSD are used for the PDP-11 and VAX distributions of Berkeley UNIX. 4.2 BSD, first distributed in 1983, was the culmination of the original Berkeley DARPA UNIX project. 2.9 BSD is the equivalent version for PDP-11 systems. In 1986, 4.3 BSD was released. It was very similar to 4.2 BSD but included numerous internal changes, such as bug fixes and performance improvements. Some new facilitieswere also added, including support for the XeroxNetwork System protocols. 4.3 BSD Tahoe was the next version, released in 1988. It included improved networking congestion control and TCP/IP performance. Disk configurations were separated from the device drivers and read off the disks themselves. Expanded time-zone support was also included. 4.3 BSD Tahoe was actually developed on and for the CCI Tahoe system (Computer Console, Inc., Power 6 computer), rather than for the usual VAX base. The corresponding PDP-11 release is 2.10.1 BSD; it is distributed by the USENIX association, which also publishes the 4.3 BSD manuals. The 4.3 2 BSD Reno release saw the inclusion of an implementation of ISO/OSI networking. The last Berkeley release, 4.4 BSD, was finalized in June of 1993. It includes new X.25 networking support and POSIX standard compliance. It also has a radically new file system organization, with a new virtual file system interface and support for stackable file systems, allowing file systems to be layered on top of each other for easy inclusion of new features. An implementation of NFS is included in the release (Chapter 17), as is a new log-based file system (see Chapter 12). The 4.4 BSD virtual memory system is derived from Mach (described in Section 23.9). Several other changes, such as enhanced security and improved kernel structure, are also included. With the release of version 4.4, Berkeley halted its research efforts.