Betriebssysteme: Architekturen, Prozesse und Scheduling-Algorithmen
Eingeordnet in Informatik
Geschrieben am in
Deutsch mit einer Größe von 18,16 KB
Betriebssysteme (OS): Architekturen und Konzepte
OS-Architekturen
Monolithische Architektur
Die Struktur des ersten Betriebssystems bestand hauptsächlich aus einem einzigen Programm, das aus einer Reihe verbundener Unterprogramme aufgebaut war. Jede Routine konnte jede andere Funktion aufrufen. Der Bau des endgültigen Programms basierte auf separat kompilierten Modulen, die durch einen Linker verbunden und verwaltet wurden. Monolithische Systeme hatten keine Schutzmechanismen, boten aber eine schnelle und effiziente Ausführung.
Hierarchische Architektur
Das Betriebssystem wird in verschiedene autonome Teile unterteilt (die denselben Prozess ausführen), sodass jeder Teil klar definiert ist und eine eindeutige Schnittstelle zum Rest des Systems ermöglicht.
- Features:
- Planung des Prozessors (Festlegung der verwendeten Richtlinien).
- Speicherverwaltung (das OS entscheidet, ob monolithischer Speicher verwendet wird oder ob mit Cache gearbeitet wird, etc.).
- Controller, Konsole oder Bediener sowie Ein- und Ausgabe.
- Informations- oder Dateiverwaltung.
Virtuelle Maschine (VM)
Das Betriebssystem präsentiert eine Maschine, die mit der zugrunde liegenden realen Maschine identisch ist, obwohl sie es nicht ist. Die virtuelle Maschine bietet Funktionen, die die reale Maschine möglicherweise nicht bietet, und schützt die reale Maschine vor möglichem Missbrauch.
Client-Server-Architektur
Diese Architektur weist große Unterschiede in der Verteilung der Arbeit auf. Der Kern hat die Funktion, die Kommunikation zwischen Clients und Servern zu verwalten. Prozesse können sowohl Clients als auch Server sein, und ein Server kann wiederum Client eines anderen Servers sein.
Dienste des Betriebssystems
- Programmausführung: Ermöglicht die Implementierung von Programmen.
- Ein-/Ausgabe-Verwaltung: Ermöglicht Ein- und Ausgabe.
- Dateiverwaltung: Einfacher Zugriff und Organisation von Dateien.
- Ressourcenzuweisung: Es müssen Mechanismen vorhanden sein, um Ressourcenkonflikte zu lösen, wenn mehrere Benutzer oder Prozesse um dieselben Ressourcen konkurrieren. Wenn zwei Benutzer dieselbe Datei verwenden möchten, muss eine Priorität festgelegt werden (z. B. durch Semaphore).
- Abrechnung (Accounting): Zeitkontrolle der Ressourcennutzung durch Benutzer.
- Schutz: Das Betriebssystem muss Schutz vor unerwünschten Aufrufen bieten.
Prozessbeendigung und Ausnahmebehandlung
Normale Beendigung
Der Prozess gibt die Kontrolle an den Benutzer zurück, dessen Prozess durch die Shell beendet wird.
Abnormale Beendigung
Wenn während der Ausführung eines Programms ein Fehler auftritt, wird es beendet. Die Kontrolle wird an den Kommando-Interpreter zurückgegeben, um den Status oder die Art des Fehlers zu melden.
Statusanfragen und Ressourcenanfragen
- Statusanfragen: Eine Statusanfrage gibt die Kontrolle an das Programm zurück, um die gewünschten Informationen zu liefern.
- Ressourcenanfragen: Das Programm fordert spezifische Ressourcen vom Betriebssystem an (z. B. Festplatte, Drucker; alle Geräte müssen eingebunden werden).
- Ein-/Ausgabe-Funktionsanfragen: Ähnlich wie Ressourcenanfragen.
Ausnahmebehandlung (Exception Handling)
Ein besonderes Ereignis, das die Aufmerksamkeit der CPU erfordert.
Arten von Ausnahmen
- Hardwarefehler: Feste Komponenten/Maschinenwartung (elektrisch).
- Softwarefehler: Division durch Null. Wenn das Betriebssystem einen Fehler wie "Division durch Null" feststellt, beendet es die Sitzung, informiert den Benutzer und gibt den Speicher frei.
- Falsche Eingabedaten: Wenn falsche Daten eingegeben werden, müssen neue Daten angefordert werden.
- Weitere mögliche Ausnahmen: Versuchter Zugriff auf geschützte, eingeschränkte Informationen oder die Ausführung einer unzulässigen Anweisung.
Anomale Ereignisse
Ereignisse, auf die das Betriebssystem keine Standardantwort hat. Diese werden in der Regel als Ausnahmen bezeichnet und fallen in drei Kategorien:
- Katastrophale Fehler: Deaktivieren die Funktion des Systems, es gibt keinen Weg zurück. Das System muss neu gestartet werden.
- Behebbare Fehler: Beeinträchtigen nicht das System, sondern nur den gerade ausgeführten Prozess.
- Korrigierbare Datenfehler: Betreffen keine Betriebssystemprozesse. Es sind Fehler, bei denen eine Anpassung zur Fortsetzung der Ausführung möglich ist.
Schutzmechanismen des Betriebssystems
Das Betriebssystem muss eine Reihe von Schutzmechanismen an den wichtigsten Punkten seiner Funktionsweise implementieren, da:
- Programme nicht fehlerfrei sind.
- Es böswillige Benutzer gibt. Das System muss bereit sein, dem entgegenzuwirken.
Arten von Schutzmechanismen
- Schutz der Ein-/Ausgabe: Alle OS-Routinen, die I/O-Treiber aufrufen, werden kontrolliert. Bei einem Fehler wird die Kontrolle an das Betriebssystem zurückgegeben.
- Speicherschutz: Jedem Prozess wird eine Speicherzone (Adresse) für die Verarbeitung seiner Daten zugewiesen. Er kann nicht auf andere Bereiche zugreifen. Um den Zugriff auf fremde Bereiche zu verhindern, gibt es Grenzregister, die die Grenzen des zugewiesenen Speichers markieren.
- Prozessor-Schutz: Alle Prozessoren verfügen über einen Timeout, um unendliche Schleifen zu vermeiden.
Der Prozess und der Prozesskontrollblock (PCB)
Der Prozess
Ein Prozess ist ein Satz von Routinen, deren Aufgabe es ist, den Prozessor, den Speicher, die Ein- und Ausgänge sowie andere verfügbare Ressourcen zu verwalten. Per Definition ist ein Prozess ein laufendes Programm, das mit der Umgebung interagiert.
PCB (Process Control Block)
Der Prozesskontrollblock ist eine Matrix, in der die Ziele des Prozesses, der Speicher, die Adresse, die für die Ausführung erforderlichen Ressourcen und der Zustand des Prozesses erfasst werden.
Ziele des PCB
- Lokalisierung der Informationen, die das Betriebssystem über den Prozess benötigt.
- Verwaltung der Prozessdaten für den Fall, dass die Ausführung vorübergehend ausgesetzt oder neu gestartet werden muss.
Informationen im PCB
- Zustand des Prozesses: Aktiv, Inaktiv, Standby oder Zombie.
- Statistiken.
- Externe Berufung.
- Interne Ressourcen im Einsatz: Ein-/Ausgabe-Einheiten, um zu vermeiden, dass alle Ressourcen gleichzeitig benötigt werden.
- Dateien im Einsatz (OS-Dateien).
- Privilegien.
Zustände des Prozesses
Die Prozesse werden in Warteschlangen gespeichert, wobei jede Warteschlange einen bestimmten Zustand darstellt (z. B. für Jobs, Standby, Aktiv).
Aktive Zustände
Prozesse, die um den Prozessor konkurrieren oder dazu in der Lage sind:
- Running (Laufend): Der Prozess hat die Kontrolle über den Prozessor und wird ausgeführt.
- Prepared (Bereit): Der Prozess ist bereit zur Ausführung, wird aber nicht ausgeführt, oft weil Prozesse mit höherer Priorität vorhanden sind.
- Blocked (Gesperrt): Der Prozess ist momentan nicht ausführbar, da die benötigten Ressourcen nicht verfügbar sind.
Inaktive Zustände
Prozesse, die nicht um die Kontrolle des Prozessors konkurrieren können. Sie können später an der Stelle, an der sie unterbrochen wurden, wieder aktiv werden.
Ursachen für die Aussetzung eines Prozesses
Die häufigsten Ursachen sind physische Störungen oder menschliches Versagen. Es gibt zwei Fälle, in denen der Prozess im Speicher geparkt wird und auf die Reaktivierung wartet:
- Suspendiert oder Gesperrt: Ein Prozess wird ausgesetzt, bis ein Ereignis eintritt, das die Blockierung aufhebt.
- Suspendiert oder Bereit: Ein Prozess, der keinen Grund zur Blockierung hat, aber nicht aktiv ist. Er wird zu einem Zombie-Prozess.
Ein Quantum ist eine Maßeinheit, die zur Quantifizierung der Prozessarbeit benötigt wird.
Operationen auf Prozessen
Die erste Operation ist immer die Erstellung des Prozesses. Ein Prozess besteht aus (Programm + Daten + Argumente). Nach der Erstellung wird der Prozess-PCB am Ende des Vektors (Process Control Block) platziert, einer Art dynamischem Speicherort für Prozesse, die zur Ausführung bereitstehen.
Erstellung von Prozessen
Die Erstellung kann von zwei Arten sein:
- Hierarchisch: Jeder erstellte Prozess ist der Sohn eines kreativen Prozesses und erbt die Laufzeitumgebung des Vaters. Kindprozesse werden an der Speicheradresse platziert, an der sie erstellt wurden.
- Nicht-Hierarchisch: Prozesse werden durch andere Prozesse erstellt, laufen aber unabhängig vom erstellenden Prozess und dem Betriebssystem.
Weitere Operationen
- Löschen eines Prozesses: Alle Prozesse, die ihren Zweck erfüllt haben oder inaktiv sind, werden entfernt.
- Stoppen eines Prozesses: Das Betriebssystem hat die Befugnis, Prozesse auszusetzen, z. B. aufgrund einer Störung oder Systemüberlastung. Ein Prozess wird reaktiviert, wenn die Ursachen für die Aussetzung behoben sind (z. B. Drucker).
- Änderung der Priorität: Die Priorität von Prozessen kann erhöht oder gesenkt werden.
- Zeitgesteuerte Ausführung: Eine Echtzeituhr löst die Ausführung des Prozesses bei Überlastung aus.
- Aufwecken eines Prozesses: Wenn ein Prozess nicht auf die Platine passt, weil die benötigte Ressource nicht verfügbar ist, wird er zurückgehalten. Sobald die notwendigen Ressourcen verfügbar sind, wird er aufgeweckt.
Rangfolge von Prioritäten
- Priorität durch das Betriebssystem: Das Betriebssystem weist die Priorität zum Zeitpunkt der Erstellung zu.
- Priorität durch den Benutzer: Der Benutzer kann die Priorität einiger Prozesse ändern.
Statische und Dynamische Prozesse
- Statische Prozesse: Prozesse, deren Laufzeit nicht geändert werden kann.
- Dynamische Prozesse: Prozesse, deren Ausführungszeiten geändert werden können.
Abhängig von der Codewiederverwendung
- Wiederverwendbarer Prozess: Kann wiederverwendet werden.
- Reentrant-Prozesse: Prozesse, die nur Code ohne zugehörige Daten enthalten. Dieser Code wird in der Regel nur einmal in den Speicher geladen und kann gleichzeitig von mehreren Benutzern verwendet werden.
Zugriff auf Ressourcen
Ressourcen können geeignet oder nicht geeignet sein:
- Geeignet (Appropriable): Der Prozess benötigt eine Reihe von OS-Ressourcen exklusiv, und kein anderer Prozess kann sie verwenden, bis der erste Prozess beendet ist (z. B. CD-Brenner).
- Nicht geeignet (Non-Appropriable): Ermöglicht die Nutzung von Ressourcen, auch wenn diese von einem anderen Benutzer belegt sind.
Art der Ausführung
- Resident: Prozesse, die während der gesamten Laufzeit des Betriebssystemkerns im Speicher bleiben (bis die Maschine ausgeschaltet wird).
- Austauschbar (Swappable): Prozesse, die bei Systemanforderungen angehalten, hochgeladen oder aus dem Puffer gelöscht werden können. Das Betriebssystem wird dadurch nicht beeinträchtigt.
Prozessplanung (Scheduling)
Ziel der Planung
Ein guter Service für alle Prozesse, die jederzeit im System vorhanden sind, unter den bestmöglichen Bedingungen.
Ebenen der Planung
- Langfristige Planung (Long-Term Scheduling): Wird als Scheduler bezeichnet und entscheidet, welcher nächste Job ausgeführt werden soll.
- Mittelfristige Planung (Medium-Term Scheduling): Wird als Swapping-Planer bezeichnet und entscheidet, ob der Speicher eines laufenden Prozesses blockiert ist oder ob der Hauptspeicher extrahiert und vorübergehend in den sekundären Speicher ausgelagert werden muss.
- Kurzfristige Planung (Short-Term Scheduling): Der eigentliche Prozessor-Planer. Das System entscheidet, welcher Prozess als Nächstes ausgeführt werden soll, basierend auf der verwendeten Richtlinie. Prozesse, die unterbrochen werden und externe Ressourcen benötigen, werden bestraft.
Kriterien für die Planung
Kriterien für die Auswahl des geeigneten Scheduling-Algorithmus:
- Antwortzeit: Die Geschwindigkeit, mit der der Computer auf eine Anfrage reagiert.
- Betriebsdauer: Wie lange ein Prozess benötigt, um vollständig implementiert zu werden, von der Ladung in den Speicher bis zur Entfernung.
- Implementierungszeit: Die theoretische Zeit, die ein Prozess benötigen würde, wenn er nur Operationen ausführen könnte.
- Prozessorzeit: Die Zeit, die der Prozess beansprucht, ohne die Zeit, in der er blockiert, im Standby oder in der Ein-/Ausgabe ist. Die effektive Zeit der Prozessorauslastung.
- Wartezeit: Die Zeit, die ein Prozess in der Warteschlange verbringt, in der er nicht aktiv ist, aber ausgeführt werden soll.
- Zeiteffizienz (Service-Index): Der effizienteste Prozess ist derjenige, der den Prozessor am besten nutzt.
- Performance: Die maximale Anzahl von Prozessen, die der Prozessor pro Zeiteinheit ausführen kann.
Scheduling-Algorithmen
Ein Scheduling-Algorithmus ist eine Gruppe von Merkmalen, die ein Programm erfüllen muss, um die Ressourcen des Betriebssystems optimal zu nutzen. Die Algorithmen werden eingesetzt, um eine optimale Ausführungszeit zu erreichen.
Allgemeine Einteilung der Algorithmen
Präemptive Richtlinien
Der Prozess, der den Prozessor verwendet, kann vorübergehend ausgesetzt werden, um einem anderen, geeigneteren Prozess den Zugriff auf den Prozessor zu ermöglichen (ausgesetzt oder verdrängt). Dies ist üblich bei Time-Sharing-Prozessen und Echtzeit-Systemen. Bei Echtzeit-Systemen wird der Prozess mit der höchsten Priorität zuerst in die Warteschlange gestellt.
Eingebettete Betriebssysteme (Embedded OS) sind Betriebssysteme, die auf einer ROM-Platte installiert sind und für spezifische Aufgaben entwickelt wurden.
Nicht-Präemptive Richtlinien
Der Prozess wird bis zum Abschluss seiner Ausführung nicht unterbrochen.
FCFS (First Come First Served)
Der Prozess, der zuerst kommt, wird zuerst bedient (FIFO-Prinzip). Der Prozessor führt jeden Prozess in der Reihenfolge seines Eintreffens bis zum Ende aus. Dies ist eine nicht-präemptive Richtlinie. Sie ist sehr einfach, aber hat eine schlechte Leistung (der erste Prozess blockiert). Die Leistung verbessert sich, je ähnlicher die Prozesse sind. Wenn die Prozesse lang sind, laufen alle schnell, sobald sie in den Speicher geladen sind. Bei kurzen Prozessen geht viel Wartezeit verloren. Die Wartezeit hängt von den Prozessen ab, die zuvor ausgeführt wurden, und ist unabhängig von den allgemeinen Bedürfnissen des Prozesses.
- Merkmale: Nicht-präemptive Richtlinie. Vorhersehbar. Die durchschnittliche Betriebsdauer variiert stark in Abhängigkeit von der Anzahl und Dauer der Prozesse.
Round Robin (RR)
Ein Quantum ist eine Zeiteinheit, die zur Quantifizierung eines Prozesses dient. Beim Round Robin wird die CPU zwischen verschiedenen Prozessen geteilt, sodass jeder Prozess eine einmalige Zeitspanne "q" (Quantum) erhält. Wenn der Prozess danach nicht vollständig abgeschlossen ist, kehrt er an das Ende der Prozesswarteschlange zurück und erhält später erneut ein Quantum "q", bis die Ausführung beendet ist.
- Merkmale: Geringer Overhead beim Kontextwechsel, wenn er effizient ist (Verschieben des Prozesses vom Anfang zum Ende der Warteschlange). Prozesse bleiben immer im Hauptspeicher (RAM).
Wenn auf den sekundären Speicher zugegriffen werden muss, wird das System ineffizient und überlastet. Die optimale Größe des Quantums wird in Bezug auf den Typ des Betriebssystems, die Systemlast und die Anzahl der Prozesse berechnet.
Diese Richtlinie wird beim Time-Sharing verwendet. Sie bietet eine gleichmäßige Service-Rate für alle Prozesse und ist eine angemessene Richtlinie.
SJN (Shortest Job Next) First
Der kürzeste Prozess im RAM-Speicher wird als Nächstes ausgeführt. Es werden Prozesse aus der Bereit-Warteschlange ausgewählt, die die geringste Ausführungszeit benötigen. Dies setzt voraus, dass die Prozessorzeit jedes Prozesses bekannt ist, was sehr schwierig ist.
Wege zur Kenntnis der Ausführungszeit
- Informationen von Kontrollkarten des Benutzers.
- Vorgesehene Zeit durch Programmiersprachen (z. B. COBOL).
- Basierend auf Aufzeichnungen früherer Ausführungen.
Der Service ist gut für kurze Prozesse, benachteiligt aber längere Prozesse (ähnlich wie FIFO). SJN ist eine verbesserte Variante von FCFS, aber ebenfalls nicht-präemptiv.
Merkmale
- Nicht-präemptive Richtlinie.
- Unvorhersehbar, da die Ausführungsreihenfolge nicht im Voraus bekannt ist.
- Benachteiligt lange Prozesse.
- Die Richtlinie ist in der Praxis sehr schwer umzusetzen, da die für die Planung benötigten Daten (Ausführungszeit) schwer zu ermitteln sind.