UNIX Introduction
Unix or UNIX is a computer operating system originally
developed in the 1960s and 1970s by a group of AT&T Bell Labs employees
including Ken Thompson, Dennis Ritchie, and Douglas McIlroy.
A D V E R T I S E M E N T
Today's Unix
systems are split into various branches, developed over time by AT&T, several
other commercial vendors, as well as several non-profit organizations, such as
contributors to the GNU project.
Unix was designed to be portable, multi-tasking and multi-user in a time-sharing
configuration. The Unix systems are characterized by various concepts: plain
text files, command line interpreter, hierarchical file system, treating devices
and certain types of inter-process communication as files, etc. In software
engineering, Unix is mainly noted for its use of the C programming language and
for the Unix philosophy.
The present owner of the UNIX trademark is The Open Group, while
the present claimants on the rights to the UNIX source code are SCO Group and
Novell (an issue that is currently being decided in court). Only systems fully
compliant with and certified to the Single UNIX Specification qualify as "UNIX"
(others are called "UNIX system-like" or Unix-like).
During the late 1970s and early 1980s, Unix's influence in academic circles led
to massive adoption (particularly of the BSD variant, originating from the
University of California, Berkeley) of Unix by commercial startups, the most
notable of which is Sun Microsystems.
Sometimes, Traditional Unix may be used to describe a Unix or GNU operating
system that has the characteristics of either Version 7 Unix or UNIX System V.
Beginning in the late 1980s, an open operating system standardization effort
known as POSIX provided a common baseline for all operating systems; IEEE based
POSIX around the structure of the Unix system. At around the same time a
separate but very similar standard, the Single UNIX Specification, was also
produced by the Open Group. Starting in 1998 these two standards bodies began
work on merging the two standards, and the latest revisions of both are in fact
identical.
In an effort towards compatibility, several Unix system vendors agreed on SVR4's
ELF format as standard for binary and object code files. The common format
allows substantial binary compatibility among Unix systems operating on the same
CPU architecture.
The directory layout of some systems, particularly on Linux, is defined by the
Filesystem Hierarchy Standard. This type of standard however is controversial
among many, and even within the Linux community adoption is far from universal.
Components
The Unix system is composed of several components that are normally packaged
together. By including -- in addition to the "kernel" of an operating system --
the development environment, libraries, documents, and the portable, modifiable
source-code for all of these components, Unix was a self-contained software
system. This was one of the key reasons it emerged into an important teaching
and learning tool and had such a broad influence.
Inclusion of these components did not make the system large -- the original
V7 Unix distribution, consisting of copies of all of the compiled binaries plus
all of the source code and documentation occupied less than 10Mb, and arrived on
a single 9-track magtape. The printed documentation was contained in two fairly
thin books.
The names and filesystem locations of the Unix components has changed
substantially across the history of the system. Nonetheless, the V7
implementation is considered by many to have the canonical early structure:
- Kernel -- originally found in /usr/sys, and composed of several
sub-components:
- conf -- originally found in /usr/sys/conf, and composed of
configuration and machine-dependent parts, often including boot code
- dev -- Device drivers (originally /usr/sys/dev) for control
of hardware (and sometimes pseudo-hardware)
- sys -- The "kernel" of the operating system, handling memory
management, system calls, etc
- h (or include) -- Header files, generally defining key
interfaces within the system, and important system-specific invariables
- Development Environment -- Most implementations of Unix contained
a development environment sufficient to recreate the system from source
code. The development environment included:
- cc -- The C language compiler
- as -- The machine-language assembler for the machine
- ld -- The linking loader for combining object files
- lib -- Libraries. Originally libc, the C runtime
library, was the primary library, but there have always been additional
libraries for (e.g.) floating-point emulation (libm) or a
database implementation. V7 Unix introduced the first consistent
"Standard I/O" library stdio. Later implementations multiplied
the number and type of libraries significantly.
- include -- Header files for software development, defining
standard interfaces and system invariants
- Other (secondary) languages -- V7 Unix contained a Fortran-77
compiler, and other versions and implementations have or now contain
many other language compilers and toolsets.
- ... and a number of other tools, including an object-code archive
manager (ar), symbol-table lister, compiler-development tools
(e.g. yacc), make, and debugging tools.
- Commands -- Most Unix implementation make little distinction
between commands (user-level programs) for system operation and maintenance
(e.g. cron), commands of general utility (e.g. grep), and more
general-purpose applications such as the text formatting and typesetting
package. Nonetheless, some major categories are:
- sh -- The Shell, the primary user-interface on Unix before
window systems appeared, and the center of the command environment. To
degrees that varied in different shell implementations, external
programs (such as expr) were relied on by the shell.
- Utilities -- the core of the Unix command set, including
ls, grep, find and many others. This category could be
subcategorized:
- System utilities -- such as mkfs, fsck, and
many others; and
- User utilities -- passwd, kill, and others
- Runoff -- Unix systems never lost their heritage as early
document preparation and typesetting systems, and included many related
programs such as troff, tbl, neqn, refer,
plot
- Communications -- early Unix systems contained no
inter-system communication, but did include the inter-user communication
programs mail and talk. V7 introduced the early
inter-system communication system UUCP, and systems beginning
with the BSD release included TCP/IP utilities
- Documentation -- While not strictly part of the operating system,
Unix was unique in its time for including all of its documentation online in
machine-readable form. The documentation included:
- man -- Manual pages for each command, library component,
system call, header file, etc
- doc -- Longer documents detailing major subsystems, such as
the C language, troff, and other systems.
|