Skip to main content
main-content

Über dieses Buch

1.1 Die Formulierung von Programmen 1.1.1 Ein Betriebssystem besteht aus zahlreichen Programmen sehr unterschied- 1 icher Größe. Nicht selten bewegt sich der Umfang eines Betriebssystems zwischen 100 Kund 500 K Bytes. Ein mittelgroßer Ubersetzer für eine Programmiersprache umfaßt dagegen nur 30 - 50 K Bytes. (K ist eine Abkürzung für "Kilo", d. h. "Tau­ 10 send". In der Informatik bedeutet K stets 1024=2 .) In diesem Buch studieren wir Betriebssysteme aus der Sicht des Systementwicklers. Das bedeutet, daß wir die verschiedenen Aufgaben eines Betriebssystems analysieren sowie Programme entwickeln, die diese Aufgaben erfüllen. Dabei wird aber weniger die Analyse als vielmehr die Synthese im Vordergrund stehen: wir erörtern, wie die Komponenten eines Betriebssystems unter vorgegebenen Bedingungen realisiert werden können. Dabei kann das vorl iegende Buch als Vorbereitung für andere Bücher dienen, welche sich mehr der Analyse von Betriebssystemen widmen. Wenn der Leser das ange­ botene Material durchgearbeitet hat, wird er für eine tiefergehende Analyse der Leistungsfähigkeit von Betriebssystemen und für eine Beschäftigung mit Warte­ schlangentheorie gut vorbereitet sein. Entwicklungsstudien bilden den angemessenen Hintergrund für die mathematische Analyse von Systemmodellen. Die Systemanalyse bleibt daher im vorl iegenden Buch auf den Vergleich einiger alternativer Entwürfe und Implementierungen beschränkt.

Inhaltsverzeichnis

Frontmatter

1. Einführung

Zusammenfassung
Ein Betriebssystem besteht aus zahlreichen Programmen sehr unterschied-licher Größe. Nicht selten bewegt sich der Umfang eines Betriebssystems zwischen 100 K und 500 K Bytes. Ein mittelgroßer Übersetzer für eine Programmiersprache umfaßt dagegen nur 30–50 K Bytes. (K ist eine Abkürzung für „Kilo“, d. h. „Tausend“. In der Informatik bedeutet K stets 1024=2 10.)
A. N. Habermann

2. Grundlegende Konzepte von Betriebssystemen

Zusammenfassung
Wie wir in Abschnitt 1.4 gesehen haben, bleiben während der Ubertragung von Ein/Ausgabedaten zum/vom Arbeitsspeicher viele Speicherzyklen ungenutzt. Der Prozessor ist an der Durchführung von Ein/Ausgabeoperationen so geringfügig beteiligt, daß er, während die Geräte E/A-Daten übertragen, andere nützliche Arbeit leisten kann. In Abschnitt 1.5 wurde ein System skizziert, bei welchem Verarbeitungsphasen und Ein/Ausgabephasen abwechseln; entweder ist der Prozessor aktiv, oder Leser und Drucker sind gleichzeitig tätig. Es ist naheliegend, noch mehr Parallelarbeit anzustreben; Prozessor, Leser und Drucker sollten simultan arbeiten.
A. N. Habermann

3. Nebenläufige Prozesse

Zusammenfassung
In 2.3 haben wir festgestellt, daß es für die Entwicklung und das Verständnis eines Betriebssystems nicht ausreicht, die Betriebsprogramme jeweils in nur einer Version, in der Maschinensprache des Prozessors, zu formulieren. Es ist üblich, mit verschiedenen Repräsentationen eines Programms zu arbeiten, wobei jede einen bestimmten Aspekt hervorhebt und von den jeweils unwichtigen Details abstrahiert. Alle in Kapitel 1 besprochenen Programme sind in diesem Sinne abstrakt repräsentiert.
A. N. Habermann

4. Kooperierende Prozesse

Zusammenfassung
Im vorangegangenen Kapitel haben wir studiert, welche Vorsichtsmaßnahmen zu ergreifen sind, wenn nebenläufige Operationen auf gemeinsame Objekte zugreifen. Es muß verhindert werden, daß ein Objekt von zwei oder mehr Operationen gleichzeitig modifiziert wird. Dies wird erreicht, indem die Operationen als kritische Anweisungen programmiert werden. In welcher Reihenfolge zwei kritische Anweisungen ausgeführt werden ist egal; wichtig ist nur, daß sie nicht überlappt ausgeführt werden.
A. N. Habermann

5. Kommunizierende Prozesse

Zusammenfassung
In diesem Kapitel wollen wir untersuchen, wie Prozesse Informationen untereinander austauschen können. In den Kapiteln 1 und 2 haben wir gesehen, daß ein Betriebssystem eine Vielzahl von Prozessen umfaßt, wie z. B. Trommeltreiber, Terminalverwalter, Benutzerprozesse. Obgleich jeder dieser Prozesse autonom arbeitet, erhält er doch seine Aufträge von außen. Das sieht man besonders gut am Trommeltreiber aus 2.2. Seine Aufgabe besteht darin, die Trommel zu aktivieren und den Datenverkehr zwischen ihr und dem Arbeitsspeicher zu überwachen. Wie der Trommeltreiber das tut, ist seine eigene Angelegenheit; daß er etwas tut, liegt daran, daß andere Prozesse ihm Transferaufträge erteilen. Eine solche Auftragserteilung ist eine von vielen möglichen Arten der Interprozeßkommunikation.
A. N. Habermann

6. Ablaufsteuerung

Zusammenfassung
In den vorangegangenen Kapiteln war wiederholt von Betriebsmitteln die Rede, die zu jedem Zeitpunkt höchstens einem Benutzer zur Verfügung stehen können, z. B. Geräte oder Speicherblöcke, aber auch so abstrakte Betriebsmittel wie kritische Abschnitte. Wenn mehrere Benutzer sich um ein solches Betriebsmittel bewerben, dann erhalten sie es nacheinander zugeteilt. Die Zuteilung des Betriebsmittels muß demnach über einen geeigneten Verwaltungsmechanismus koordiniert werden. Dabei wird die Reihenfolge, in der die Benutzer bedient werden, durch eine Zuteilungsstrategie festgelegt (engl. scheduling strategy/policy/discipline).
A. N. Habermann

7. Speicherverwaltung

Zusammenfassung
In diesem Kapitel werden Verfahren zur Verwaltung zweistufiger Speichersysteme, bestehend aus Primärspeicher (Arbeitsspeicher) und Sekundärspeicher (Hintergrundspeicher), behandelt. Grundsätzlich wird bei der Speicherverwaltung angestrebt, nur die aktuell benötigten Informationen im Primärspeicher zu halten und die nicht benötigten Teile in den Sekundärspeicher auszulagern. Das geschieht aus ökonomischen Gründen. Instruktionen und Daten, auf die der Prozessor eine Zeit lang nicht zugreifen muß, können vorübergehend auf langsamen und billigen Hintergrundspeichern untergebracht werden. Der schnelle und teuere Arbeitsspeicher kann dann kleiner ausgelegt werden. Dieses Prinzip ist uns bereits früher begegnet (vgl. 2.2): in einem Stapelsystem ist es nicht sinnvoll, die anstehenden Aufträge im Arbeitsspeicher unterzubringen; günstiger ist die Unterbringung in einem billigen Massenspeicher, z. B. einer Trommel. Der verwendete Hintergrundspeicher kann erheblich langsamer sein als der Arbeitsspeicher, er muß nur eine große Kapazität haben.
A. N. Habermann

8. Strategien zur Speicherverwaltung

Zusammenfassung
Das oberste Ziel der Verwaltung eines zweistufigen Speichers ist, jeweils diejenigen Informationen im Arbeitsspeicher bereitzuhalten, auf die voraussichtlich in nächster Zukunft zugegriffen wird. Daran orientieren sich alle in Kapitel 7 behandelten Verfahren — Prozeßumlagerung, Segmentierung, Seitenverfahren sowie die Kombination der beiden letzteren. Je näher man diesem Ziel kommen will, desto mehr Verwaltungsaufwand muß man betreiben. Es ist somit angebracht, über den Aufwand der verschiedenen Verfahren und ihrer möglichen Varianten nachzudenken.
A. N. Habermann

9. Datenverwaltung

Zusammenfassung
Die ersten Rechner wurden, wie ihr Name sagt, hauptsächlich zum automatischen Rechnen benutzt. Heute spielt die Fähigkeit des Rechners zur Datenspeicherung eine mindestens ebenso große, wenn nicht größere Rolle. Mit seinen vergleichsweise billigen peripheren Speichergeräten kann der Rechner riesige Datenmengen für längere Zeit (Monate und Jahre) speichern. Dem Betriebssystem kommt hier die Aufgabe zu, gewisse Grundfunktionen für die Speicherung, Sicherung und Manipulation langfristiger Datenbestände bereitzustellen.
A. N. Habermann

10. Systemstruktur und -entwicklung

Zusammenfassung
Eine Verklemmung liegt vor, wenn Prozesse auf Betriebsmittel warten, die niemals freigegeben werden. Die einfachste Form einer Verklemmung besteht darin, daß ein Prozeß P1 im Besitz eines Betriebsmittels a ist und auf die Zuteilung eines Betriebsmittels B wartet, während ein anderer Prozeß P2 im Besitz von B ist und auf A wartet. Im Abschnitt 3.5 haben wir gesehen, wie zwei Prozesse in eine solche Situation geraten können: der eine Prozeß führt ‘P(A); P(B)’ aus, der andere ‘P(B); P(A)’, wobei die Semaphore A,B mit 1 initialisiert sind. Verallgemeinert: jeder Prozeß in einer Gruppe von Prozessen wartet auf ein Betriebsmittel, das gerade von einem anderen Prozeß der Gruppe benutzt wird.
A. N. Habermann

Backmatter

Weitere Informationen