Review of Djikstra's "THE-Multiprogramming" paper

From: Gail Rahn (grahn_at_cs.washington.edu)
Date: Wed Jan 07 2004 - 15:33:29 PST

  • Next message: Justin Voskuhl: "Review for "The Structure of the THE-Multiprogramming System""

    In Djikstra's paper, he recounts the design and implementation of a
    primitive operating system for a Dutch computer. THE was a system intended
    to "smoothly process" a stream of Algol-60 programs. THE handled access to
    peripherals, including printing and disk storage. THE implements buffering.
    THE uses distinct system hierarchies. THE was designed to equitably manage
    the simultaneous execution of multiple programs and manage processes' access
    to shared system peripherals.

    Because the goal of this paper is to present the design and structure of
    THE, I read this paper with an eye to which design methodologies are dated
    and which are. Even though the products are drastically different, is the
    architectural design process similar between now and then? I was interested
    to discover that some the main architectural goals of THE are very similar
    to systems design goals of modern programming projects:
            (1) equitable access to system resources, including synchronization
    and queueing.
            (2) economic use of resources.
            (3) availability (process fast things fast, process slow things
    fairly)
            (4) bug prevention through thorough architectural analysis
            (5) layering - distinct, self-contained, testable project units.
    (hierarchies)
            (6) services - always-running system processes (like the message
    interpreter)
            (7) testing methodologies that (attempt to) prove that all or most
    project areas are coverate

    Along the way, the designers of THE ran into both practical and theoretical
    problems. Also here, many of these problems are still regularly encountered
    by modern systems designers:
            (1) too strong of a focus on theory, to the detriment of practical
    experimentation
            (2) too little focus on debugging
            (3) employing overcommitted system designers
            (4) hardware failure

    And, when comparing THE to modern programming projects, especially in the
    corporate world, I especially loved hearing that in THE "reprogramming on
    account of a change of specifications has been rare".

    The question that remains for me about this paper is one of context - what
    was the "start of the art" contemporary to this paper, and what topics in
    this paper were considered groundbreaking or seminal. Independence of memory
    units from hardware storage units? Multiprogramming in general? Mutual
    synchronization?

    It would help me to understand why this paper is considered class enough to
    form a basis for our exploration. More than "here's an example of a simple,
    early operating system", what here is revolutionary?

    -- Gail.
    grahn_at_cs.washington.edu

    -------------
    Gail Rahn
    gail_at_screaminggeek.com
    206.719.5563

    Screaming Geek Software
    www.screaminggeek.com


  • Next message: Justin Voskuhl: "Review for "The Structure of the THE-Multiprogramming System""

    This archive was generated by hypermail 2.1.6 : Wed Jan 07 2004 - 15:33:37 PST