Zurich, 1992, 442 p.
Вирт Н. , Гуткнехт Ю. Разработка ОС и компилятора. Проект Оберон.
Монография "патриарха надёжного программирования" Никласа Вирта и его сотрудника
о том, как надо конструировать операционные системы и языки программирования.
Table of Contents
Historical background and motivation
Basic concepts and structure of the system
The Tasking System
The Display System
The Text System
The Module Loader
The File System
Storage Layout and Management
Device drivers
The network
A dedicated server for file distribution, electronic mail, and printing
The compiler
A graphics editor
Building and maintenance tools
Ten Years After: From Objects to Components
Preface
This book presents the results of Project Oberon, namely an entire software environment
for a modern workstation. The project was undertaken by the authors in the years 1986-89,
and its primary goal was to design and implement an entire system from scratch,
and to structure it in such a way that it can be described, explained, and understood as a whole.
In order to become confronted with all aspects, problems, design decisions and details,
the authors not only conceived but also programmed the entire system described in this book,
and more.
Although there exist numerous books explaining principles and structures of operating systems,
there is a lack of descriptions of systems actually implemented and used. We wished not only
to give advice on how a system might be built, but to demonstrate how one was built.
Program listings therefore play a key role in this text, because they alone contain
the ultimate explanations. The choice of a suitable formalism therefore assumed
great importance, and we designed the language Oberon as not only an effective vehicle
for implementation, but also as a publication medium for algorithms in the spirit
in which Algol 60 had been created three decades ago. Because of its structure,
the language Oberon is equally well suited to exhibit global, modular structures
of programmed systems.
In spite of the small number of man-years spent on realizing the Oberon System,
and in spite of its compactness letting its description fit a single book,
it is not an academic toy, but rather a versatile workstation system that
has found many satisfied and even enthusiastic users in academia and industry.
The core system described here, consisting of storage, file, display, text,
and viewer managers, of program loader and device drivers, draws its
major power from a suitably chosen, flexible set of basic facilities and,
most importantly, of their effective extensibility in many directions and
for many applications. The extensibility is particularly enhanced by the
language Oberon on the one, and by the efficiency of the basic core on the other hand.
It is rooted in the application of the object-oriented paradigm which is employed
wherever extensibility appears advantageous.
In addition to the core system, we describe in full detail the compiler
for the language Oberon and a graphics system, which both may be regarded as applications.
The former reveals how a compact compiler is designed to achieve both fast compilation
and efficient, dense code. The latter stands as an example of extensible design based on
object-oriented techniques, and it shows how a proper integration with an existing text
system is possible. Another addition to the core system is a network module allowing
many workstations to be interconnected. We also show how the Oberon System serves conveniently
as the basis for a multi-server station, accommodating a file distribution, a printing,
and an electronic-mail facility.
Compactness and regular structure, and due attention to efficient implementation of important
details appear to be the key to economical software engineering. With the Oberon System,
we wish to refute Reiser's Law, which has been confirmed by virtually all recent releases
of operating systems: In spite of great leaps forward, hardware is becoming faster more slowly
than software is becoming slower. The Oberon System has required a tiny fraction of the manpower
demanded for the construction of widely-used commercial operating systems, and a small fraction
of their demands on computing power and storage capacity, while providing equal power
and flexibility to the user, albeit without certain bells and whistles. The reader is invited
to study how this was possible.
But most importantly, we hope to present a worth-while case study of a substantial piece
of programming in the large for the benefit of all those who are eager to learn from
the experiences of others.