The Linux Programming Interface

(nextflipdebug5) #1

20 Chapter 1


join him in improving the kernel. Many programmers did so, and, over time, Linux
was extended and ported to a wide variety of hardware architectures.
The portability problems that arose from the variations in UNIX and C imple-
mentations that existed by the late 1980s created a strong pressure for standardiza-
tion. The C language was standardized in 1989 (C89), and a revised standard was
produced in 1999 (C99). The first attempt to standardize the operating system
interface yielded POSIX.1, ratified as an IEEE standard in 1988, and as an ISO stan-
dard in 1990. During the 1990s, further standards were drafted, including various
versions of the Single UNIX Specification. In 2001, the combined POSIX 1003.1-2001
and SUSv3 standard was ratified. This standard consolidates and extends various
earlier POSIX standards and earlier versions of the Single UNIX Specification. In
2008, a less wide-ranging revision of the standard was completed, yielding the com-
bined POSIX 1003.1-2008 and SUSv4 standard.
Unlike most commercial UNIX implementations, Linux separates implementa-
tion from distribution. Consequently, there is no single “official” Linux distribu-
tion. Each Linux distributor’s offering consists of a snapshot of the current stable
kernel, with various patches applied. The LSB develops and promotes a set of stan-
dards for Linux systems with the aim of ensuring binary application compatibility
across Linux distributions, so that compiled applications should be able to run on
any LSB-conformant system running on the same hardware.

Further information
Further information about UNIX history and standards can be found in [Ritchie,
1984], [McKusick et al., 1996], [McKusick & Neville-Neil, 2005], [Libes & Ressler,
1989], [Garfinkel et al., 2003], [Stevens & Rago, 2005], [Stevens, 1999], [Quarter-
mann & Wilhelm, 1993], [Goodheart & Cox, 1994], and [McKusick, 1999].
[Salus, 1994] is a detailed history of UNIX, from which much of the informa-
tion at the beginning of this chapter was drawn. [Salus, 2008] provides a short his-
tory of Linux and other free software projects. Many details of the history of UNIX
can also be found in the online book History of UNIX, written by Ronda Hauben.
This book is available at http://www.dei.isep.ipp.pt/~acc/docs/unix.html. An extremely
detailed timeline showing the releases of various UNIX implementations can be
found at http://www.levenez.com/unix/.
[ Josey, 2004] provides an overview of the history of the UNIX system and the
development of SUSv3, guidance on how to use the specification, summary tables
of the interfaces in SUSv3, and migration guides for the transitions from SUSv2 to
SUSv3 and C89 to C99.
As well as providing software and documentation, the GNU web site (http://
http://www.gnu.org/) contains a number of philosophical papers on the subject of free
software. [Williams, 2002] is a biography of Richard Stallman.
Torvalds provides his own account of the development of Linux in [Torvalds &
Diamond, 2001].
Free download pdf