From: Gail Rahn (grahn_at_cs.washington.edu)
Date: Wed Jan 07 2004 - 15:33:29 PST
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
This archive was generated by hypermail 2.1.6 : Wed Jan 07 2004 - 15:33:37 PST