Review for "THE" Multiprogramming system

From: manish (manish_mittal_at_hotmail.com)
Date: Tue Jan 06 2004 - 22:32:54 PST

  • Next message: Nathan Dire: "Review of THE (Nate Dire)"

    This paper, by Edsger Dijkstra, describes the structure of the "THE" operating/multiprogramming system. This system has been designed for a Dutch machine EL XS. The goal of this project was to produce a multiprogramming operating system which would shorten the turn-around time of programs and would make economic use of peripheral devices and processor.
     
                   Dijkstra proposed that the systems could be built as hierarchies of layers, each layer needing only whats defined in layers below it. Each layer provided abstraction to the layer above it. In 'THE', the layers were:
    Level 0: Dispatcher/Scheduler. This layer defines process abstraction, turns interrupts into dispatches.
    Level 1: Memory manager. This layer defines notion of segment (logical unit of storage) independent of physical medium used to hold segment (drum, core). It makes drum and core look similar.
    Level 2: provides console communications
    Level 3:I/O streams. Multiplexes peripherals among processes.
    Level 4: User programs
    Level 5: Operator
     Above level 0, everything is implemented via separate processes. Main idea behind the layers was to simplify interactions and implementations. This simplifies the testing of the system. This idea of layer based system is very well described in this paper.
     
                   Another noteworthy contribution of this work is the abstraction of "core" pages and "drum" pages into one unified piece of information, called a segment. This allowed the system to deal with data abstractly and not worry whether it was going to "core" or "drum". It's clearly the beginning of virtual memory systems.
     
    In this article, Dijkstra presents the concept of a semaphore. A semaphore is a method by which we can enforce mutual exclusion between two separate events. This is the first attempt at defining higher-level machine-independent synchronization mechanisms and is undoubtedly one of this paper's most important contributions to systems design.
    Dijkstra recognizes two nearly-distinct uses of semaphores:
    Mutual exclusion: ensure orderly manipulation of data.
    Scheduling ("private semaphores"): ensure correct order of execution of processes.
     
    I found the section on 'Design Experience' interesting. After initial design discussion, Dijkstra has described at length the test methodology that his team used. Testing each layer separately and then testing the integration with additional layers indicates the thoroughness of the tests performed.
     


  • Next message: Nathan Dire: "Review of THE (Nate Dire)"

    This archive was generated by hypermail 2.1.6 : Tue Jan 06 2004 - 22:26:55 PST