Chapter 1. Introduction to the Linux
Kernel
After three decades of use, the unix operating system is still regarded as one of the most
powerful and elegant systems in existence. Since the creation of Unix in 1969, the brainchild of
Dennis Ritchie and Ken Thompson has become a creature of legends, a system whose design has
withstood the test of time with few bruises to its name.
Unix grew out of Multics, a failed multiuser operating system project in which Bell Laboratories
was involved. With the Multics project terminated, members of Bell Laboratories' Computer
Sciences Research Center were left without a capable interactive operating system. In the
summer of 1969, Bell Lab programmers sketched out a file system design that ultimately
evolved into Unix. Testing their design, Thompson implemented the new system on an otherwise
idle PDP-7. In 1971, Unix was ported to the PDP-11, and in 1973, the operating system was
rewritten in C, an unprecedented step at the time, but one that paved the way for future
portability. The first Unix widely used outside of Bell Labs was Unix System, Sixth Edition, more
commonly called V6.
Other companies ported Unix to new machines. Accompanying these ports were enhancements
that resulted in several variants of the operating system. In 1977, Bell Labs released a
combination of these variants into a single system, Unix System III; in 1982, AT&T released
System V
[1]
.
[1]
What about System IV? The rumor is it was an internal development version.
The simplicity of Unix's design, coupled with the fact that it was distributed with source code, led
to further development at outside organizations. The most influential of these contributors was
the University of California at Berkeley. Variants of Unix from Berkeley are called Berkeley
Software Distributions (BSD). The first Berkeley Unix was 3BSD in 1979. A series of 4BSD
releases, 4.0BSD, 4.1BSD, 4.2BSD, and 4.3BSD, followed 3BSD. These versions of Unix added
virtual memory, demand paging, and TCP/IP. In 1993, the final official Berkeley Unix, featuring a
rewritten VM, was released as 4.4BSD. Today, development of BSD continues with the Darwin,
Dragonfly BSD, FreeBSD, NetBSD, and OpenBSD systems.
In the 1980s and 1990s, multiple workstation and server companies introduced their own
commercial versions of Unix. These systems were typically based on either an AT&T or Berkeley
release and supported high-end features developed for their particular hardware architecture.
Among these systems were Digital's Tru64, Hewlett Packard's HP-UX, IBM's AIX, Sequent's
DYNIX/ptx, SGI's IRIX, and Sun's Solaris.
The original elegant design of the Unix system, along with the years of innovation and
evolutionary improvement that followed, have made Unix a powerful, robust, and stable
operating system. A handful of characteristics of Unix are responsible for its resilience. First,
Unix is simple: Whereas some operating systems implement thousands of system calls and have
unclear design goals, Unix systems typically implement only hundreds of system calls and have a
very clear design. Next, in Unix, everything is a file
[2]
. This simplifies the manipulation of data
and devices into a set of simple system calls: open(), read(), write(), ioctl(), and close().
In addition, the Unix kernel and related system utilities are written in Ca property that gives
Unix its amazing portability and accessibility to a wide range of developers. Next, Unix has fast
process creation time and the unique fork() system call. This encourages strongly partitioned