Paper: "The structure of the “THE”-multiprogramming system", by E. Dijkstra, Communications of the ACM, Vol. 11, No. 5, 1968, 341--346.

Presented by: Aiman Erbad

 

For the paper click here.

For presentation material click here.

 

Discussion Questions

The discussion questions are classified into several categories as follows: 

     Performance

Synchronization

State-Of-the-Art

Harmonious Cooperation

     Miscellaneous

 

Discussion Summary

The discussion was guided to address the main categories in the questions asked. In general, the questions were in four main categories: performance, state-of-the-art, synchronization, and proof of correctness. The discussion addressed the point about performance Vs abstraction in more depth. Some clarifications were given regard questions in the other categories. The summary is organized into the four questions categories.

 Performance

The question that was asked is: Does the layered architecture of the OS have a huge performance drawback?

The layered architecture goal is to build abstractions that are useful for clarity, ease of testing, and maintenance. These abstractions impose some restriction that negatively affects performance. So we can say that we beautiful abstractions that are not efficient. For example, Windows NT had a layered-oriented structure in its first release but the performance was worse than Windows 95. Then, they reduced the number of layers and put more functionality in each layer to gain some performance back.

Another question is: With these abstractions how much time would be before the users (programmers) hack around the inefficient abstractions? 

Layers are enforced by software. They are not supported by hardware which make them optional. They are optional since programming languages, such as C and assembly do not support these types of abstractions leading to violations of these abstractions. The abstractions are considered guidelines not realities. The abstractions look like the blue print of Linux but the implementation uses various type of optimizations that violate these abstractions.

Moreover, the layer abstraction is grouping functions and data which are exactly the components of an object in an OO programming language (so each layer represents a big object). It is arguable that this paper is the beginning of a field that is trying to find the most useful abstraction. The abstraction can be Layers, a microkernel, or a virtual machine.

State-Of-The-Art

Most operating systems consider layering as a guideline in building there system. The idea of building OS using abstractions is useful because it makes the system modular. However, the performance draw back made layering useless in building commercial OS.

Synchronization

Synchronization was done through two types of semaphores:

Private semaphores are similar to signal and wait since we a process locks itself and another process unlocks it. The notion of private is slightly confusing; therefore, private semaphores proved useless and disappeared from the synchronization literature.

Proof of Correctness

Dijkstra does not go into the proof details. He only mentions the three steps which are proved in A. N. Habermann thesis. The proof is trying to use formal methods in the verifying the OS correctness. The idea of using formal methods to check the correctness of OS software fluctuates in a cycle of interest. Currently it is a hot topic of research. A group in  Microsoft is creating tools to diagnose device drivers.