The etymologies of the UNIX operating system have been extensively documented.
This section concentrates on the major technical characteristic of UNIX; for more detailed information on other aspects of its history, see the “Resources” section at the end of this book.
UNIX development began at Bell Labs in 1969 by Ken Thompson and, later, Dennis Ritchie, Joe Ossanna, and Rudd Canaday. The original development was on a PDP-7 computer; in 1971, it moved to the PDP-11. According to Ritchie:
Thompson wanted to create a comfortable computing environment constructed according to his own design, using whatever means were available. His plans, it is evident in retrospect, incorporated many of the innovative aspects of Multics, including an explicit notion of a process as a locus of control, a tree-structured file system, a command interpreter as user-level program, simple representation of text files, and generalized access to devices. They excluded others, such as
unified access to memory and to files. At the start, moreover, he and the rest of us deferred another pioneering (though not original) ele- ment of Multics, namely writing almost exclusively in a higher-level language. PL/I, the implementation language of Multics, was not much to our tastes, but we were also using other languages, including BCPL, and we regretted losing the advantages of writing programs in a language above the level of assembler, such as ease of writing and clarity of understanding. At the time we did not put much weight on portability; interest in this arose later. (Ritchie 1993, 2)
By the end of 1971, three users within Bell Labs were running UNIX. UNIX was first described at the Operating Systems Principles Conference (Ritchie 1985, 28) in 1973.8 A development group was created within Bell Labs to support UNIX, and that group began supporting and developing commercial versions of UNIX (Sys- tem III/System V) in 1982. (Seehttp://perso.wanadoo.fr/levenez/unix and http://
minnie.tuhs.org/TUHS/Images/unixtimeline.gif for diagrams of UNIX releases.) Many of the technical features embodied in UNIX were evolutionary, but some were truly groundbreaking. One of these was the reimplementation of the UNIX kernel in C, which constituted a major event in the history of operating systems.
Up until this time, operating systems were written in assembly language, causing them to be strongly coupled to specific hardware architectures. With the advent of C, it was now possible to write an operating system kernel in a high-level language.
Consequently, the operating system was loosely coupled to the hardware on which it ran, and could be easily ported to other hardware architectures. This feature significantly contributed to the popularity of UNIX.
Traditionally, there were two main lines of UNIX releases: the Bell Labs research versions, which led to the commercial releases of System V Release 4 (SVR[N]);
and versions from the University of California at Berkeley (BSD). Over the past several years, many free UNIX-like operating systems have emerged, including Minix, Linux, FreeBSD, and OpenBSD.
Tables D.1 through D.3 highlight the technical features of various UNIX releases between 1971 and 1990.9
8 This resulted in the seminal ACM paper on UNIX (Ritchie, Thompson 1974).
9 These tables were collected from the following sources: Pate 1996, 3–5; DiBona, Ockman, Stone 1999, 31–46; Stevens 1990, 11–13; The UNIX FAQ, 6/7.
Table D.1 Bell Labs research release
Release Main features
Version 1 (1971) Written in assembler; included a B compiler; included most of the modern commands, file system, fork(), roff, ed.
Version 2 (1972) -
Version 3 (1973) Added pipes (McIlroy); included a C compiler (Ritchie).
Version 4 (1973) Kernel was rewritten in C.
Version 5 (1974) Included source code; free to universities for educational use.
Version 6 (1975) Nearly all of the OS was written in C. First release available outside Bell Labs. Release was the basis for John Lions’ “A Commentary on the Unix Operating System.” 1.xBDS was derived from this version.
Version 7 (1979) Included the Bourne shell and K&R C compiler. Kernel was rewritten in C for portability. Licensed by Microsoft to develop XENIX, uucp. For some, V7 was the “last true Unix,”
an “improvement over all preceding and following Unices”
(UNIX FAQ, 6/7).
Version 8 (1985) Added elements from BSD 4.1BSD; used as the development version for System V Release 3 (SVR3), STREAM I/O.
Version 9 (1986) Added elements from BSD 4.3BSD.
Version 10 (1989) Last version from Bell Labs.
Table D.2 System III–V releases
Release Main features
System III (1982) First commercial Unix from AT&T. FIFOs (named pipes).
System V (1983) Inner Process Communicated (IPC) package; message queues, semaphores, shared memory.
System V Release 2 (SVR2) (April 1984) General upgrade.
System V Release 2.0 (November 1984)
Enhancement release including advisory file and record locking, demand paging.
System V Release 3.0 (SVR3) (1986) Major enhancement to 2.0 including STREAM I/O (from Version 8), poll, Remote File Sharing (RFS), shared libraries, Transport Layer Interface (TLI), mandatory file and record locking, Transport Provider Interface (TPI).
System V Release 3.1 (1987) General upgrade.
Table D.4 summarizes the release dates of the UNIX versions.10
Release Main features
System V Release 3.2 (mid-1988) Included support for Intel 80386; binary compatibility for programs written for Xenix.
System V Release 4.0 (SVR4) (late 1990)
Merging of AT&T System V with SunOS (4.xBSD derivative), Virtual File System (VFS) and Network File System (NFS) from Sun; different memory management; C and Korn shells;
symbolic links; STREAM-based console I/O and TTY
management; BSD UFS fast file system; job control; sockets;
memory-mapped files; real-time scheduling and partial kernel pre-emption; C compiler conforming to ANSI X3J11.
Table D.3 BSD release features
Release Main features
BSD (early 1977) Pascal compiler, ex.
2BSD (mid 1978) vi, termcap (both by Bill Joy).
3BSD (December 1979) (based on Version 7 32V)
Virtual memory kernel, 32/V utilities, features from 2BSD.
4BSD (1980) Job control (originally by Jim Kulp), auto reboot, 1K block file system, Franz Lisp system, better mail handling, reliable signals.
4.1BSD (June 1981) Auto configuration code (Robert Elz)
4.1aBSD (1982) TCP/IP protocols (Robert Gurwitz); r commands (rcp, rsh, rlogin,rwho).
4.1bBSD (1982) Fast file system (Marshal Kirk McKusick).
4.1cBSD (April1983) Revised IPC; reorganization of the kernel sources, isolating machine dependencies.
4.2BSD (August 1983) New signal facilities; re-implemented standalone I/O system to simplify the install process; disk quote (Robert Elz); updates of documentation.
4.3BSD (1986/1990) NFS, VFS/vnodes, kernel debugger, enhanced network support.10
10For detailed information on releases of BSD from 4.3BSD, see DiBona, Ockman, Stone 1999, 31–46.
Table D.2 System III–V releases (continued)
Table D.4 UNIX releases
Date Bell Lab research versions (BLRV)
Commercial versions based on Bell Lab research versions
University of California at Berkley (BSD)
1971 BLRV (V1)
1972 BLRV (V2)
1973 BLRV (V3)
1973 BLRV (V4)
1974 BLRV (V5)
1975 BLRV (V6)
1979 BLRV (V7)
1977 BSD
1978 2BSD
1979 3BSD
1980 4BSD
1981 4.1BSD
1981 4.1aBSD
1982 4.1aBSD,
4.1bBSD
1983 4.1cBSD
1983
1985 BLRV (V8)
1982 System III
1983 System IV
1983 System V
1984 System V Release 2
1984 System V Release 2.0
1986 BLRV (V9) System V Release 3.0 4.3BSD
1987 System V Release 3.1 4.3BSD
1988 System V Release 3.2 4.3BSD
1989 BLRV (V10) 4.3BSD
1990 System V Release 4.0 4.3BSD