Review: Dennis M. Ritchie and Ken Thompson. The UNIX Timesharing System.

From: Richard Jackson (richja_at_expedia.com)
Date: Wed Jan 07 2004 - 16:31:54 PST

  • Next message: Praveen Rao: "Review of "The UNIX Time-sharing system" paper"

    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.
     


  • Next message: Praveen Rao: "Review of "The UNIX Time-sharing system" paper"

    This archive was generated by hypermail 2.1.6 : Wed Jan 07 2004 - 16:32:06 PST