 |
Einführung in Betriebssyteme
von Prof. Jürgen Plate |
Was ist ein Betriebssystem
Unter einem Betriebssystem (engl. operating system) versteht man Software, die
zusammen mit dem Hardwareeigenschaften des Computers die Basis zum Betrieb bildet
und insbesondere die Abarbeitung von Programmen steuert und überwacht.
Vereinfacht gesagt, macht das Betriebssystem die Benutzung des Computers erst
möglich. Im folgenden werden Einordnungs- und Bewertungskriterien besprochen.
1.1 Grundlagen, Systemschnittstelle
Nach DIN 44300 umfaßt ein Betriebssystem:
Die Programme eines digitalen Rechensystems, die zusammen mit den Eigenschaften
dieser Recheanlage die Basis der möglichen Betriebsarten des Rechensystems
bilden und die insbesondere die Abwicklung von Programmen steuern udn überwachen.
Ein Betriebssystem hat folgende grundlegende Aufgaben:
- Verbergen der Komplexität der Maschine vor dem Anwender (Abstraktion)
- Bereitstellen einer Benutzerschnittstelle ("Kommandointerpreter", "Shell")
- Bereitstellen einer normierten Programmierschnittstelle (API)
- Verwaltung der Resourcen der Maschine
- Prozessor(en)
- Hauptspeicher
- Hintergrundspeicher (Platte, Band, etc.)
- Geräte (Terminal, Drucker, Plotter, etc.)
- Rechenzeit
- Koordination von Prozessen
1.2 Klassifizierung von Betriebssystemen
Die erste Computergeneration (ca. 1945-1955) besaß kein Betriebssystem.
- Programmierung direkt (Steckbrett, Lochstreifen, Lochkarte)
- Keine Programmiersprachen
Die zweite Generation (ca. 1955-1965) arbeitete mit Stapelverarbeitung. Ein Auftrag
wird in geschlossener Form, bestehend aus Programm, Daten und Steueranweisungen,
zusammengestellt. Die Resultate erhält der Benutzer erst nach Abschluß
der Bearbeitung zurück (meist als Ausdruck).
- Batch-Betrieb (Lochkarten)
- Einfache Job-Control-Sprachen
- Programmiersprachen (Assembler, Fortran, etc.)
- Magnetbänder als Zwischenspeicher
Die dritte Generation (ca. 1965-1980) beherrscht Dialogverarbeitung. Der Benutzer
kommuniziert mit dem Computer über Tastatur und Bildschirm, mit deren Hilfe
er Programme starten, verfolgen und beeinflussen kann.
- Multiprogramming = Mehrprogrammbetrieb = Mehrere Programme gleichzeitig im
Speicher quasisimultane, zeitlich verschachtelte Bearbeitung auf der Auftragsebene.
- Hauptspeicheraufteilung für mehrere Programme
- Zeitliche Verschachtelung der Programme
(z.B.: Prog. A wartet auf Ausgabe, Prog. B rechnet)
--> Timesharingbetrieb mit Terminals
- SPOOLING (simultaneous peripheral operation on line)
direktes Speichern von Rechenaufträgen auf der Platte,
"Selbstbedienung" des BS
- MULTICS als UNIX-Vorgänger
- 1969 das erste UNIX
Die vierte Generation (ab ca. 1975) ist ein Dialogsystem, wie wir es heute kennen.
- UNIX und C
- Multitasking als quasisimultane Ausführung weitgehend unabhängiger
Programmabschnitte innerhalb eines Auftrags.
- Personal Computer (CP/M, MS-DOS, etc.)
- Netzwerkbetriebssysteme (Kommunikation mehrerer Computer)
- verteilte Betriebssysteme (mehrere Prozessoren = Multiprocessing) Mehrere
Prozessoren bilden ein Computersystem --> Mehrere Programme werden von verschiedenen
Prozessoren bearbeitet oder ein Programm von mehreren Prozessoren.
Bei bestimmten Betriebssystemen spielt auch die Verarbeitungszeit eine Rolle.
Bei Realzeit-(Echtzeit-)Betriebssystemen für Steuerungs- und Regelungsaufgaben
(sog. Prozeßrechner) spielt die Antwortzeit eine Rolle. Informationen werden
hier zum Teil von elektronischen Meßwandlern (Sensoren) gewonnen. Das Programm
reagiert auf äußere Ereignisse in angemessen kurzer Zeit (Maschinenregelung:
1 - 10 ms, Prozeßregelung: 10 - 100 ms, Prozeßsteuerung: 0,1 - 1 s).
Es wird spezielle Hard- und Software benötigt.
Betriebssysteme lassen sich nach unterschiedlichen Kriterien klassifizieren:
Kassifizierung nach der Betriebsart des Rechnersystems
Stapelverarbeitungs-Betriebssysteme (batch processing)
Dialogbetrieb-Betriebssysteme (interctive processing, dialog processing)
Netzwerk-Betriebssysteme (network processing)
Realzeit-Betriebssysteme (realtime-processing)
Universelle Betriebssysteme (erfüllen mehrere Kriterien)
Klassifizierung nach der Anzahl der gleichzeitig laufenden Programme:
In dieser Klassifikation kommt der Begriff "Task" vor. Alternativ kann der
deutsche Begriff "Prozeß" Verwendung finden. Aus Anwendersicht
kann an dieser Stelle auch der Begriff "Aufgabe"bzw. "Auftrag"
verwendet werden.
- Einzelprogrammbetrieb (singletasking)
Ein einziges Programm läuft jeweils zu einem bestimmten Zeitpunkt. Mehrere
Programme werden nacheinander ausgeführt.
- Mehrprogrammbetrieb (multitasking)
Mehrere Programme werden gleichzeitig (bei mehreren CPUs) oder zeitlich verschachtelt,
also quasi-parallel, bearbeitet.
Klassifizierung nach der Anzahl der gleichzeitig am Computer arbeitenden Benutzer:
- Einzelbenutzerbetrieb (singleuser mode)
Der Computer steht nur einem einzigen Benutzer zur Verfügung.
- Mehrbenutzerbetrieb(multiuser mode)
Mehrere Benutzer teilen sich die Computerleistung, sie sind über Terminals
oder Netzwerkverbindungen mit dem Computer verbunden.
Klassifizierung nach der Anzahl der verwalteten Prozessoren bzw. Rechner:
Es geht jedoch nicht darum, wieviel
Prozessoren allgemein in einem Rechner verwendet werden, sondern
wieviel Universalprozessoren für die Verarbeitung
der Daten zur Verfügung stehen.
Somit ergibt sich folgende Unterscheidung:
- Ein-Prozessor-Betriebssystem
Die meisten Rechner, die auf der von-Neumann-Architektur aufgebaut sind, verfügen über
nur einen Universalprozessor. Aus diesem Grund unterstützen auch die
meisten Betriebssysteme für diesen Anwendungsbereich nur einen Prozessor.
- Mehr-Prozessor-Betriebssystem
Für diese Klassifizierung der Betriebssysteme ist noch keine
Aussage über die Kopplung der einzelnen Prozessoren getroffen
worden. Auch gibt es keinen quantitativen Hinweis über die
Anzahl der Prozessoren, nur, daß es mehr als ein Prozessor ist.
Für die Realisierung der Betriebssysteme für die Mehrprozessorsysteme gibt es zwei
Herangehensweisen:
- Jedem Prozessor wird durch das Betriebssystem eine eigene Aufgabe
zugeteilt. D.h., es können zu jedem Zeitpunkt nur
soviel Aufgaben bearbeitet werden, wie Prozessoren
zur Verfügung stehen. Es entstehen Koordinierungsprobleme,
wenn die Anzahl der Aufgaben nicht gleich der Anzahl
verfügbarer Prozessoren ist.
- Jede Aufgabe kann prinzipiell jedem Prozessor zugeordnet werden, die
Verteilung der Aufgaben zu den Prozessoren ist nicht an die Bedingung gebunden,
daß die Anzahl der Aufgaben gleich der Anzahl Prozessoren ist.
Sind mehr Aufgaben zu bearbeiten, als Prozessoren vorhanden sind, so
bearbeitet ein Prozessor mehrere Ausgaben "quasi-parallel". Sind mehr
Prozessoren als Aufgaben vorhanden, dann bearbeiten mehrere
Prozessoren eine Aufgabe.
Das Betriebssystem kann dabei seinerseits auch auf mehrere Prozessoren
verteilt sein. Man spricht dann von "verteilten Betriebssystemen".
1.3 Architektur des Betriebssystems
Zur logischen Strukturierung wird das Betriebssystem normalerweise in mehrere
Schichten oder Schalen eingeteilt. Die unterste Schale beinhaltet alle hardwareabhängigen
Teile des Betriebssystems, insbesondere auch die Verarbeitung von Interrupts.
Auf diese Weise ist es möglich, das BS leicht an unterschiedliche Rechnerausstattungen
anzupassen. Die nächste Schicht enthält die grundlegenden Ein-/Ausgabe-Dienste
für Plattenspeicher und Peripheriegeräte. Die darauffolgende Schicht behandelt
Kommunikations- und Netzwerkdienste, Dateien und Dateisysteme. Weitere Schichten
können je nach Anforderung folgen. Ein Betriebssystem besitz als drei oder mehr
logische Schichten.
Jede Schicht bildet eine abstrakte (virtuelle) Maschine, die mit ihren benachbarten
Schichten über wohldefinierte Schnittstellen kommuniziert. Sie kann Funktionen
der nächstniedrigeren Schicht aufrufen und ihrerseits Funktionen für die
nächsthöhere Schicht zur Verfügung stellen. Die Gesamtheit der von
einer Schicht angebotenen Funktionen wird auch als "Dienste" dieser Schicht bezeichnet.
Die Gesamtheit der Vorschriften, die bei der Nutzung der Dienste einzuhalten sind, wird
als "Protokoll" bezeichnet.
Die unterste Schicht setzt immer direkt auf der Rechner-Hardware auf. Sie verwaltet die
realen Betriebsmittel des Rechners und stellt stattdessen virtuelle
Betriebsmittel bereit. Oft wird diese Schicht als "BIOS" (Basic I/O-System)
bezeichnet. Alle weiteren Schichten sind von der Hardware unabhängig.
Durch jede Schicht wird eine zunehmende "Veredelung" der Hardware erreicht (z. B.
wachsende Abstraktion, wachsende Benutzerfreundlichkeit).
Durch die Programmierschnittstelle (API, Applications Programmers Interface) der höheren
Schichten wird auch vermieden, daß jeder Programmierer die grundlegenden Routinen
für den Zugriff auf Ein-/Ausgabegeräte und Massenspeicher selbst programmieren
muß. Das BS stellt also eine definierte Programmierschnittstelle zur Verfügung.
Änderungen am BS oder der Hardware wirken sich so nicht auf die Anwenderprogramme
aus, die nach wie vor über die gleichen Betriebssystem-Aufrufe die Dienste
des BS in Anspruch nehmen.
Bei Einzelbenutzer-Singletaskingsystemen können Anwenderprogramme die Schichtenstruktur
durchbrechen und z. B. direkt auf einer bestimmten Hardwarekomponente aufsetzen.
Bei Mehrbenutzer- oder Multitaskingsystemen ist dies nicht möglich, das hier
der Schutz der einzelnen Resourcen (CPU, Platte, Ein-/Ausgabe, usw.) für jedes
Programm vor Beeinflussung durch andere Programme gewährleistet werden muß.
Hier ist eine streng hierarchische Kommunikation nötig, die nur zwischen zwei
benachbarten Schichten zulässig ist.
Bedenkt man, daß heutige Rechnersysteme sich selbst innerhalb einer Rechnerfamilie
vielfältig in Speicherausstattung, Art und Umfang der angeschlossenen Geräte
unterscheiden, so wird klar, daß die Erstellung monolithischer Programme
für jede mögliche Rechnerkonstellation ein praktisch undurchführbares
Unternehmen ist. Die Lösung dieses Problems heißt hier: Modularisierung.
Programme werden in Module zerlegt, die zueinander über definierte Schnittstellen
in Beziehung stehen. Somit ist es möglich, innerhalb eines Programmes einen Modul
durch einen anderen mit gleicher Schnittstelle zu ersetzen, um das Programm an eine andere
Rechnerkostellation anzupassen. Die Auswahl und Zusammenstellung der allgemeingültigen
Module wird bestimmt durch die eingesetzte Hardware und die Art der Programme, die
durch diese Module unterstützt werden sollen. Sie ist für viele Programme, die auf
einem Rechner abgearbeitet werden sollen, gleich und unterscheiden sich wiederum
etwas von Rechner zu Rechner.
1.4 Warum Multitasking mehr Rechnerleistung bringt
Man möchte annehmen, daß bei mehreren quasiparallel laufenden Programmen
die reale Laufzeit für jedes einzelne Programm länger ist als wenn nur ein
Programm auf dem Rechner laufen würde. Nehmen wir der Einfachheit halber an, daß
jeder Prozeß dieselbe Laufzeit zugeteilt bekommt und auch jeder regelmäßig
an die Reihe kommt.
Wenn man dieses Bild betrachtet, dauert freilich jedes Programm länger, denn die
Zeit wird ja zwischen den Programmen geteilt. In der Praxis ist es jedoch so, daß
Programme oftmals auf äußere Ereignisse warten müssen, z. B. bis eine
Tasteneingabe getätigt wurde oder bis Daten von der Platte in den Speicher
transportiert wurden. Wie Sie später sehen werden,
kann ein Programm, das auf ein externes Ereignis wartet, in einen Wartezustand versetzt
werden und inzwischen können andere Programme weiterarbeiten. Bei einem
Multitasking-Betriebssystem kann der Rechner Datenbanken indizieren, Dokumente drucken,
E-Mail absenden, usw. während Sie über den nächsten Zug gegen das
Schachprogramm nachdenken.
Copyright © FH München, FB 04, Prof. Jürgen Plate