Co-operating Sequential Processes

   page       BibTeX_logo.png   
Edsger Wybe Dijkstra
Per Brinch Hansen (eds.)
The Origin of Concurrent Programming: From Semaphores to Remote Procedure Calls, chapter 2, pages 65-138


  1. Introduction
  2. On the Nature of Sequential Processes.
  3. Loosely Connected Processes.
    1. A Simple Example.
    2. The Generalized Mutual Exclusion Problem.
    3. A Linguistic Interlude.
  4. The Mutual Exclusion Problem Revisited.
    1. The Need for a More Realistic Solution.
    2. The Synchronizing Primitives.
    3. The Synchronizing Primitives Applied to the Mutual Exclusion Problem.
  5. The General Semaphore.
    1. Typical Uses of the General Semaphore.
    2. The Superfluity of the General Semaphore.
    3. The Bounded Buffer.
  6. Cooperation via Status Variables.
    1. An Example of a Priority Rule.
    2. An Example of Conversations
      1. Improvements of the Previous Program.
      2. Proving the Correctness.
  7. The Problem of the Deadly Embrace.
    1. The Banker's Algorithm.
    2. The Banker's Algorithm Applied
  8. Concluding Remarks.