The Structure of the "THE"-Multiprogramming System

From: James Welle (jwelle_at_Exchange.Microsoft.com)
Date: Tue Jan 06 2004 - 19:05:44 PST

  • Next message: Greg Green: "Review of THE"

            In this paper, Dijkstra describes the experience of developing
    an operating system at Technological University and gives an overview of
    the architecture and design of the system. In the Appendix of the paper,
    he introduced semaphores as the method for synchronization.
            The system itself is divided into layers, each of which has a
    specific purpose related to controlling hardware or the user's
    interaction with the system. Layer 0 is responsible for controlling
    processor allocation. Layer 1 is the segment controller which handles
    the drum and core memory. Layers 2 and 3 are concerned with user input
    and output.
            The layered approach allows the implementation of lower layers
    to be ignored at those above. Memory is referenced by a segment address
    which is independent of the physical address where the memory resides.
    This seems like an early precursor to virtual memory. Above Layer 0, the
    number of processers available is irrellevant. This paper reminded me of
    essays recently written for the web by Joel Spolsky and several others
    about layers of abstraction. The theme of those essays is that layers of
    abstraction are good, but that there are often times where a user of the
    system really needs to understand what is happenning at all levels.
    Dijkstra may be hinting at this same issue when he mentions the "page
    flutter" that would occur between the segement controller and higher
    layers.
            Explicit mutual synchronization is used to control the execution
    of the sequential processes running on the machine. The method for this
    synchronization is explained in the Appendix. I was surprised to see
    semaphores introduced there with no references. I was not aware Dijkstra
    invented semaphores, but he is credited with inventing them on the web.
    Since there are no references in the paper, it is difficult to tell
    whether or not this is the original paper where semaphores were
    introduced.
            I was also surprised to see such a focus on testing the system
    in this paper. In the 1960s, I would have expected testing to have been
    more of an afterthought but Dijkstra mentions running unit tests on each
    layer and also attempting to design exhaustive test cases for all the
    possible states of the machine.
            Dijstra's notion of a "homing position" and his description of
    the cyclic nature of the sequential processes was very intuitive, but it
    would have been nice to see more formal proofs of the concepts.

    jw


  • Next message: Greg Green: "Review of THE"

    This archive was generated by hypermail 2.1.6 : Tue Jan 06 2004 - 19:06:44 PST