From: Richard Jackson (richja_at_expedia.com)
Date: Wed Jan 07 2004 - 16:31:54 PST
This 1973 paper by Ritchie and Thompson gives an overview of the UNIX
(time-sharing) operating system. At the time of this paper, UNIX was a
few years old. The authors were attempting to document some of the
then-current ideas supporting the design and use of UNIX.
As a casual user of UNIX systems for the last 10 years, this paper was
very interesting to me. I was fascinated with the history and reasoning
behind many of the system features which now seem commonplace. Although
much other UNIX documentation exists, the authors of this paper give a
unique perspective that is difficult to replicate.
The authors first give some background on the state of UNIX, describing
some of the installations and the intended usage. They also give some
information about the low cost of hardware required to run UNIX -
$40000. Adjusting for inflation to current monetary value, this amount
seems high. However, at the time, I am sure it was quite low, compared
to other available systems. It is interesting that this "low cost"
philosophy has endured, as one of Linux's key benefits is that it can
run on almost any(even inexpensive and/or old) hardware.
Next, a detailed overview of the file system is presented. They
describe the directory hierarchy and explain the organization and naming
of files. Most of this information is intuitive to anyone who has used
a modern operating system. Their special treatment and explanation of
"." and ".." was interesting, as these concepts have probably baffled
many computer users over the years. A short mention is made of
devices(special files), but the detail is very limited. The key point
here is that, in UNIX, special files are treated like normal files, and
that you can read/write from them as usual. An overview of 'mount' is
given next, which the authors again relate to the "everything is a file"
concept. Throughout the paper, this is a common theme/concept.
An overview of processes and images was presented next. This section
did not provide much detail, but did enumerate most of the key concepts
for processes, forking, etc. The description of fork() was helpful, as
it explained how to differentiate between a parent and child process.
The section on the Shell was quite interesting. This section combined
all knowledge from the paper to help explain how a shell works. Based
on this section, it is fairly easy to understand how a Shell could be
implemented. It also clarifies the reasons for how shells currently
work.
The authors also included considerable information about the
implementation of the file system and shell, which I found very
interesting. These features are quite innocuous at the surface level,
but the implementation details make them seem much more accessible.
As I was reading this paper, I was reminded of some of ESR's(Eric S
Raymond) writings on various related topics. Many of the underlying
themes are very similar.
The major strengths of this paper are:
1) Very good information about the basic design of the UNIX file
system, shell, processes and IO.
2) Excellent historical perspective about an operating system that is
still widely used today
The weaknesses of this paper are:
1) The tables about CPU usage near the end of the paper are
interesting, but not very relevant. I wasn't sure what to do with this
information.
2) The paper focuses largely on file systems, the shell and IO. While
these sections were great, I felt that other areas deserved more
attention(security, devices, etc). As hidden in a subtitle: "This paper
discusses the nature and implementation of the file system and of the
user command interface."
Overall, this paper provides an excellent explanation of various common
UNIX features. Most of these concepts are probably well-understood by
UNIX veterans, but I think anyone else will be able to benefit from
reading this paper.
This archive was generated by hypermail 2.1.6 : Wed Jan 07 2004 - 16:32:06 PST