Grundlagen von Betriebssystemen: Speicher, Prozesse, Planung
Eingeordnet in Informatik
Geschrieben am in Deutsch mit einer Größe von 26,43 KB
Organisation der Datenträger
Ein Datenträger wird von mehreren **Platten** komponiert, in denen die Speicherung von Informationen auf ihrer Oberfläche organisiert ist. Dies geschieht in konzentrischen **Spuren**, die wiederum in Sektoren unterteilt sind. Spuren sind in **Zylindern** angeordnet. Ein **Zylinder** umfasst alle Spuren, die die gleiche Position auf verschiedenen Platten oder Scheiben einnehmen. Alle Spuren eines Zylinders können gelesen werden, ohne den Kopf zu bewegen, was Zeit spart.
Die kleinste Einheit, die auf einem Datenträger gelesen oder geschrieben werden kann, ist der **Sektor**. Ein ganzer Sektor wird gelesen und in einem **Puffer** gespeichert, von dem aus auf die einzelnen Bits zugegriffen wird. Sektoren können nicht zusammenhängend angeordnet sein. Diese Technik ist als **Interleaving** bekannt. Der **Interleaving-Faktor** gibt die Anzahl der Sektoren an, die zwischen zwei logisch aufeinanderfolgenden Sektoren übersprungen werden.
Zugriffszeit auf die Platte
Die gesamte Zugriffszeit auf eine Festplatte wird durch drei physikalische Vorgänge bestimmt: die **Positionierungszeit** (*seek time*), die **Rotationsverzögerung** (*rotation delay*) und die **Transferzeit** (*transfer time*).
- Die **Positionierungszeit** ist die Zeit, die der Lese-/Schreibkopf benötigt, um sich zum entsprechenden Zylinder zu bewegen.
- Die **Rotationsverzögerung** bezieht sich auf die Zeit, die benötigt wird, bis der gewünschte Sektor unter dem Lese-/Schreibkopf positioniert ist. Sie wird oft als Durchschnitt (die Hälfte einer vollen Umdrehung) angegeben.
- Die **Transferzeit** hängt von der Menge der zu übertragenden Daten ab.
Adressierung
Die Adressierung von Daten auf der Platte erfolgt typischerweise über Zylinder-, Kopf- und Sektornummern.
RAID
**RAID** (*Redundant Array of Independent Disks*) ist eine Technologie zur Verbesserung der Leistung und/oder Zuverlässigkeit von Speichersystemen durch die Kombination mehrerer Festplatten.
- RAID 0: Auch als **Disk-Striping** bekannt. Verteilt Daten über mehrere physische Platten. Bietet keine Redundanz zur Fehlerbehebung.
- RAID 1: **Mirroring** oder Spiegelung von Platten. Erhöht die Zuverlässigkeit durch Redundanz, aber nicht die Effizienz.
- RAID 2: Redundanz durch **Hamming-Code**. Verwendet separate Platten für Daten und Fehlerkorrekturcodes.
- RAID 3: **Bit-Parität**. Verwendet eine dedizierte Paritätsplatte.
- RAID 4: **Block-Level-Parität**. Verwendet eine dedizierte Paritätsplatte.
- RAID 5: **Verteilte Block-Level-Parität**. Paritätsinformationen sind über alle Platten verteilt.
- RAID 6: **Doppelte Parität**. Bietet höhere Redundanz durch zwei unabhängige Paritätsinformationen.
Techniken zur Realisierung von E/A
- Programmierte E/A: Der Prozessor gibt einen E/A-Befehl für einen Prozess an das E/A-Modul. Der Prozessor wartet dann, bis der Vorgang abgeschlossen ist, bevor er fortfährt.
- Interrupt-gesteuerte E/A: Der Prozessor gibt einen E/A-Befehl für einen Prozess und setzt die Ausführung anderer Anweisungen fort. Das E/A-Modul unterbricht den Prozessor, wenn der Vorgang abgeschlossen ist.
- Direkter Speicherzugriff (DMA): Ein DMA-Modul steuert den Datenaustausch zwischen Hauptspeicher und E/A-Modul. Der Prozessor sendet eine Anforderung für einen Datenblock an das DMA-Modul und wird erst unterbrochen, wenn der gesamte Block übertragen wurde.
Struktur und Funktionen der E/A-Logik
- Lokale Peripheriegeräte: Einfache Kommunikation, z. B. als Byte-Datenstrom oder über Register. Beteiligte Ebenen: E/A-Logik, E/A-Gerätetreiber, Planung und Steuerung.
- Kommunikationsgeräte: Die E/A-Logik wird durch eine Kommunikationsarchitektur mit mehreren internen Schichten ersetzt.
- Sekundärspeichergeräte oder Dateisysteme: Das E/A-Logikmodul wird durch drei Schichten ersetzt: Verzeichnisverwaltung, Dateisystem und physische Organisation.
E/A-Pufferung
Diese Technik ist als **Pufferung** oder **Zwischenspeicherung** bekannt. Bei der Erörterung verschiedener Pufferungsmethoden ist es wichtig, zwischen **Blockgeräten** und **Stromgeräten** zu unterscheiden. Schon der Name deutet auf die minimale Übertragungseinheit jeder Klasse hin.
- Einfache Pufferung: Nehmen wir an, T ist die Zeit für eine E/A-Operation und C ist die Zeit zwischen zwei E/A-Anfragen. Ohne Puffer wäre die Gesamtzeit zwischen zwei Zugriffen T + C. Mit Pufferung wäre sie Max(T, C) + M, wobei M der Aufwand ist, den gelesenen Block in den Benutzerspeicherbereich zu verschieben.
- Doppelte Pufferung: Zur Verbesserung der einfachen Pufferung kann jedem Vorgang ein Puffer zugewiesen werden. So kann das System mit einem Puffer arbeiten, während der nächste Block in den anderen Puffer gelesen wird (oder umgekehrt).
- Ringpuffer: Wenn mehr als zwei Puffer verwendet werden, spricht man von einem **Ringpuffer**. Dies entspricht dem Erzeuger-Verbraucher-Modell.
Festplatten-Scheduling-Strategien
- First-Come, First-Served (FCFS): Bedienung in der Reihenfolge der Ankunft. Der einfachste Algorithmus. Durchschnittliche Wartezeit kann lang sein. Benachteiligt kurze Prozesse und E/A-gebundene Prozesse. Modus: Nicht-präemptiv. Overhead minimal. Einfach zu implementieren.
- Shortest Process Next (SPN): Planung nach geschätzter kürzester Bedienzeit. Erfordert Schätzung der CPU-Zeit. Bietet gute Reaktionszeiten für kurze Prozesse. Modus: Nicht-präemptiv. Overhead kann hoch sein. Benachteiligt lange Prozesse und kann zum Verhungern führen.
- Shortest Remaining Time First (SRTF): Eine präemptive Variante von SPN. Planung nach kürzester verbleibender Bedienzeit. Entscheidung bei Ankunft eines neuen Prozesses oder Blockierung/Beendigung des laufenden Prozesses. Bietet sehr gute Reaktionszeiten für kurze Prozesse. Modus: Präemptiv. Overhead kann sehr hoch sein. Benachteiligt lange Prozesse und kann zum Verhungern führen.
- Round Robin (RR): Eine präemptive FIFO-Strategie mit Zeitkontingent (*time slice*). Bietet gute Reaktionszeiten für kurze Prozesse. Modus: Präemptiv (nach Zeitkontingent). Overhead moderat. Gerechte Behandlung aller Prozesse. Durchsatz kann niedrig sein, wenn das Zeitkontingent sehr klein ist.
- Highest Response Ratio Next (HRRN): Die Auswahlfunktion berücksichtigt sowohl die Wartezeit als auch die benötigte Bedienzeit. Bevorzugt Prozesse, die lange gewartet haben. Vermeidet das Verhungern langer Prozesse. Modus: Nicht-präemptiv. Overhead kann hoch sein. Durchsatz ist in der Regel hoch.
- First In, First Out (FIFO): Die einfachste Strategie. Elemente werden der Reihe nach verarbeitet. Gute Leistung, wenn wenige Prozesse zugreifen oder Anfragen zusammenhängen.
- Last In, First Out (LIFO): Bedienung des zuletzt angeforderten Geräts. Führt zu geringer Armbewegung bei sequentiellen Zugriffen. Nutzt räumliche Nähe. Gefahr des Verhungerns bei hoher Aktivität.
- Prioritätssystem: Zielt nicht auf Festplattenoptimierung, sondern auf OS-Ziele. Batch-Jobs und interaktive Jobs erhalten oft höhere Priorität.
- Kürzeste Bedienzeit zuerst (SSTF - Shortest Seek Time First): Wählt die Anfrage mit der geringsten Armbewegung. Arm kann sich in beide Richtungen bewegen. Kann zum Verhungern führen.
- SCAN (Aufzugsalgorithmus): Arm bewegt sich in eine Richtung und bedient Anfragen, kehrt dann um. Verhindert Verhungern. Bevorzugt Anfragen in der Nähe der Enden.
- C-SCAN (Circular SCAN): Arm bewegt sich nur in eine Richtung. Springt am Ende zum anderen Ende zurück, ohne Anfragen zu bedienen. Reduziert maximale Wartezeit.
- N-Step SCAN und FSCAN: Teilen die Warteschlange in Segmente, um Starrheit zu vermeiden. N-Step SCAN wendet SCAN auf Unterwarteschlangen an. FSCAN verwendet zwei Warteschlangen (eine wird verarbeitet, neue Anfragen sammeln sich in der anderen).
Architektur von Dateisystemen
- Verwaltung der unteren Geräteebene: Kommunikation mit Peripheriegeräten, Treibern oder Kanälen.
- Physische E/A: Die nächste Ebene, primäre Schnittstelle zur Hardware.
- Grundlegende E/A-Steuerung: Verantwortlich für Initiierung und Abschluss aller E/A-Vorgänge. Verwaltet Kontrollstrukturen für E/A, Geräteplanung und Dateistatus.
- Logische E/A: Teil des Dateisystems, auf den Benutzer und Anwendungen zugreifen. Bietet allgemeine E/A-Funktionen und verwaltet grundlegende Dateimetadaten.
- Zugriffsmethoden: Die benutzernächste Ebene. Bietet eine Standardschnittstelle zwischen Anwendungen und Dateisystemen/Speichergeräten.
Organisation und Logischer Dateizugriff
- Stapelverarbeitung (Batches): Daten werden in der Reihenfolge ihres Eintreffens gesammelt. Zweck ist das Sammeln einer Masse von Daten und Datensätzen. Zugriff erfolgt durch umfassende Suche.
- Sequenziell: Dateiformat für Datensätze. Alle Datensätze haben die gleiche Länge und Anzahl von Feldern.
- Indizierte sequentielle Dateien: Behalten Merkmale sequenzieller Dateien bei. Datensätze sind in einer Sequenz basierend auf einem Schlüsselfeld organisiert.
- Indizierte Dateien: Wenn Zugriff anhand anderer Attribute als des Schlüsselfelds erforderlich ist. Sequentialität wird aufgegeben, nur einzelne Schlüsselbegriffe verwendet.
- Direktzugriffs- oder Hash-Dateien: Nutzen die Fähigkeit von Festplatten, direkt auf jeden Block über seine bekannte Adresse zuzugreifen.
Dateizuteilungsmethoden
Zusammenhängende Allokation
Logische Blöcke der Datei sind benachbart auf dem Gerät gespeichert (zusammenhängende Blöcke auf der Festplatte). Minimale Anzahl von Suchvorgängen und minimale Suchzeit.
- Vorteile: Unterstützt sequenziellen und direkten Zugriff. Der gesamte Speicherplatz wird für Daten genutzt.
- Nachteile: Schwierigkeit, Platz für die Dateierstellung zu finden. Externe Fragmentierung. Vorherige Deklaration der Dateigröße erforderlich.
Verkettete Allokation
Datei als verkettete Liste von Blöcken auf der Festplatte. Blöcke können über die gesamte Platte verteilt sein. Der Verzeichniseintrag enthält einen Zeiger auf den ersten und letzten Block der Datei.
- Vorteile: Keine externe Fragmentierung. Keine vorherige Deklaration der Dateigröße erforderlich.
- Nachteile: Effizienter Zugriff nur für sequentielle Dateien. Speicherplatz für Zeiger wird benötigt. Zuverlässigkeit: Datenverlust durch Verlust eines Zeigers.
Indizierte Allokation
Ein Indexblock enthält Zeiger auf die Datenblöcke der Datei.
- Vorteile: Keine externe Fragmentierung. Keine vorherige Deklaration der Dateigröße erforderlich. Unterstützt sequenziellen und direkten Zugriff.
- Nachteile: Zusätzlicher Speicherplatz für Indexblöcke. Zuverlässigkeit: Datenverlust durch Verlust eines Indexblocks.
Verwaltung des freien Speicherplatzes
Bitmaps
Verwendet einen Vektor mit einem Bit pro Festplattenblock. 0 = freier Block, 1 = belegter Block.
- Vorteile: Schnell und einfach.
- Nachteile: Größe kann bei großen Festplatten hoch sein.
Verkettete freie Abschnitte
Freie Abschnitte sind durch Zeiger miteinander verkettet, wobei jeder Eintrag die Länge des freien Abschnitts angibt.
- Vorteile: Geringer Verwaltungsaufwand.
- Nachteile: Neigung zur Fragmentierung (kleine freie Abschnitte) und Verlangsamung bei der Suche nach freiem Speicherplatz.
Einheit 1: Grundlagen Betriebssysteme
Definition Betriebssystem (BS)
Ein Betriebssystem ist ein Programm, das die Ausführung von Software-Anwendungen steuert und als Schnittstelle zwischen dem Benutzer und der Computerhardware dient. Es hat drei klare Ziele: Komfort, Effizienz und Leistungsfähigkeit.
Das Betriebssystem als Ressourcenmanager
Es verwaltet eine Reihe von Computerressourcen für Übertragung, Speicherung und Datenverarbeitung und steuert diese Funktionen.
Geschichte
Erste Generation (1945-1955): Serienverarbeitung
Die gesamte Programmierung erfolgte in absoluter Maschinensprache. Der Programmierer interagierte direkt mit der Computerhardware.
Zweite Generation (1955-1965): Einfache Batch-Systeme
Die zentrale Idee ist die Verwendung eines Software-Elements, das als Monitor bekannt ist. Der Monitor steuert die Abfolge der Ereignisse. Ein großer Teil davon muss immer im Hauptspeicher verbleiben (residenter Monitor). Der Rest des Monitors besteht aus Dienstprogrammen, die als Subroutinen in die Benutzerprogramme geladen werden, wenn die Arbeit beginnt.
Dritte Generation (1965-1980): Batch-Systeme mit Multiprogramming
Der Durchbruch ist die Möglichkeit, mehrere Jobs oder Programme gleichzeitig auszuführen und effektiv umzuschalten, wenn ein Prozess auf eine E/A-Operation wartet. Dieses Modell ist als *Multitasking* oder *Multiprogramming* bekannt.
Vierte Generation (1980-1990): Personal Computer
Die Entwicklung von VLSI-Schaltungen (*Very Large Scale Integration*) läutete die Ära der Personal Computer ein. Architektonisch unterschieden sich diese Computer nicht wesentlich von der vorherigen Generation von Mikrocomputern. Die Produktionskosten waren jedoch um mehrere Größenordnungen niedriger.
Klassifizierung von Betriebssystemen
Aus Sicht der Ressourcenverwaltung
- Monoprogramm-Systeme: Im Speicher befindet sich nur ein Prozess.
- Multiprogramm-Systeme: Basierend auf der Multiprogramming-Technik. Der Prozessor wechselt zwischen mehreren im Speicher befindlichen Prozessen.
- Multiprocessing-Systeme: Basierend auf der Verwendung mehrerer Prozessoren. Das Betriebssystem ist für die Verteilung der Programme auf die Prozessoren zuständig.
Aus Sicht der Interaktivität
- Batch-Verarbeitungssysteme: Keine direkte Interaktion zwischen Benutzer und System. Am einfachsten zu planen. Monitor (Betriebssystem) muss resident sein.
- Timesharing-Systeme: Verbinden Terminals über Kommunikationsleitungen. Interaktive Programme werden ausgeführt. Terminal hat kein eigenes BS. Systemadministrator erforderlich. System verteilt Prozessorzeit unter Benutzern.
- Echtzeitsysteme: Müssen eine garantierte Reaktionszeit haben. Zur Steuerung von Anwendungen, Kommunikation, Industrieanlagen etc. Gekennzeichnet durch Prioritäten.
Aus Sicht der Benutzerzahl
- Single-User-Systeme: Wird von einem einzelnen Benutzer verwendet. Multiprogramming kann verwendet werden.
- Multiuser-Systeme: Systeme, die von mehreren Benutzern gleichzeitig verwendet werden (oft Timesharing-Systeme).
Das Fünf-Zustände-Modell
Ein Prozess kann sich in einem der folgenden Zustände befinden:
- Neu (*New*): Der Prozess wird erstellt.
- Laufend (*Running*): Der Prozess führt Anweisungen auf der CPU aus.
- Blockiert (*Blocked* / *Waiting*): Der Prozess wartet auf das Eintreten eines Ereignisses.
- Bereit (*Ready*): Der Prozess wartet darauf, einem Prozessor zugewiesen zu werden.
- Beendet (*Terminated*): Der Prozess hat die Ausführung abgeschlossen oder wurde abgebrochen.
Ereignisse, die zu Zustandsübergängen führen können:
- Neu -> Bereit: Der Prozess wird erstellt und in die Warteschlange der bereiten Prozesse aufgenommen.
- Bereit -> Laufend: Der Scheduler wählt einen Prozess aus der Warteschlange der bereiten Prozesse zur Ausführung auf der CPU aus.
- Laufend -> Beendet: Der Prozess beendet seine Ausführung oder wird vom Betriebssystem abgebrochen.
- Laufend -> Bereit: Der Prozess hat sein Zeitkontingent aufgebraucht oder wird unterbrochen.
- Laufend -> Blockiert: Der Prozess wartet auf ein Ereignis (z. B. E/A-Abschluss).
- Blockiert -> Bereit: Das Ereignis, auf das der Prozess gewartet hat, ist eingetreten.
Zusätzliche Übergänge mit dem Zustand 'Ausgesetzt' (*Suspended*)
- Neu -> Bereit/Ausgesetzt: Wenn das System nicht genügend Hauptspeicher hat, kann ein neuer Prozess im Sekundärspeicher erstellt werden.
- Bereit -> Bereit/Ausgesetzt: Wenn der Hauptspeicher knapp wird, kann ein Prozess aus dem Zustand 'Bereit' in den Sekundärspeicher ausgelagert werden.
- Bereit/Ausgesetzt -> Bereit: Wenn Hauptspeicher freigegeben wird oder die Priorität es erfordert, wird ein Prozess in den Zustand 'Bereit' überführt.
- Blockiert -> Blockiert/Ausgesetzt: Wenn der Hauptspeicher knapp wird und keine bereiten Prozesse ausgelagert werden können, kann ein blockierter Prozess ausgelagert werden.
- Blockiert/Ausgesetzt -> Bereit/Ausgesetzt: Wenn das Ereignis, auf das der Prozess gewartet hat, eintritt, wechselt er in den Zustand 'Bereit/Ausgesetzt'.
Prozesskontrollstrukturen
- Speichertabellen: Verwaltung von Haupt- und Sekundärspeicher (Zuordnung von Speicherblöcken, Schutzattribute etc.).
- E/A-Tabellen: Verwaltung von E/A-Geräten und Kanälen (aktueller E/A-Status, Speicherbereiche für Übertragung etc.).
- Dateitabellen: Informationen für das Betriebssystem über Dateien im Sekundärspeicher. Verwaltet vom Dateisystem.
- Prozesstabellen: Jeder Eintrag entspricht einem Prozess. Enthält Prozess-ID und Querverweise zu Einträgen in anderen Tabellen.
Prozessabbild
Typische Elemente sind:
- Benutzerdaten: Enthält Programmvariablen, Benutzer-Stack und modifizierbare Programme.
- Benutzerprogramm: Der ausführbare Code.
- System-Stack: Jeder Prozess hat einen oder mehrere Stacks für die Ausführung. Wird verwendet, um Parameter und Rücksprungadressen zu speichern.
- Prozesskontrollblock (PCB): Enthält alle Attribute des Prozesses, d. h. Informationen, die das Betriebssystem zur Steuerung des Prozesses benötigt.
Prozesserzeugung
- fork(): Erzeugt einen Kindprozess, der eine fast exakte Kopie des übergeordneten Prozesses ist. Beide Prozesse setzen die Ausführung ab dem Punkt des fork()-Aufrufs fort. In UNIX werden Prozesse durch eine eindeutige Prozess-ID (PID) gekennzeichnet. Der Kindprozess erhält 0 als Rückgabewert, der Elternprozess die PID des Kindes.
- exec-Funktionen: Nach der Erstellung eines neuen Prozesses mit fork() kann eine exec-Funktion aufgerufen werden. Diese Funktionen ersetzen das aktuell im Prozess laufende Programm durch ein neues Programm. Die Ausführung des aktuellen Programms wird beendet, das neue Programm beginnt von vorne.
Prozesse und Threads
- Das Konzept des **Prozesses** umfasst folgende Eigenschaften:
- Ressourcenbesitz: Jeder Prozess erhält einen virtuellen Adressraum und ggf. weiteren Speicher.
- Ausführungseinheit: Ein Prozess hat einen Ausführungsstatus und eine Planungspriorität.
- Ein **Thread** (*Lightweight Process*) ist eine grundlegende Einheit der CPU-Auslastung und besteht aus einem Programmzähler, einem Satz von Registern und einem Stack.
- Der Begriff **Multithreading** bezieht sich auf die Fähigkeit eines Betriebssystems, mehrere Ausführungs-Threads innerhalb desselben Prozesses zu unterstützen.
- In einem **Monothreading-Betriebssystem** umfasst die Darstellung eines Prozesses den **PCB**, den **Adressraum**, den **Benutzer-Stack** und den **Kernel-Stack**.
- In einem **Multithreading-Betriebssystem** gibt es nur einen PCB und einen Adressraum pro Prozess, aber separate Stacks und **Thread-Kontrollblöcke (TCBs)** für jeden Thread.
Unterschiede zu Prozessen
- Threads sind **nicht unabhängig** voneinander.
- Da alle Threads auf den gesamten Adressraum des Prozesses zugreifen können, kann ein Thread den Stack eines anderen Threads lesen oder beschreiben.
- Es gibt **keinen Schutz** zwischen Threads innerhalb desselben Prozesses, da ein Multithreading-Prozess typischerweise einem einzelnen Benutzer gehört.
Vorteile von Threads gegenüber Prozessen
- Es dauert viel **weniger Zeit**, einen neuen Thread innerhalb eines bestehenden Prozesses zu erstellen, als einen neuen Prozess zu erstellen.
- Es dauert viel **weniger Zeit**, einen Thread zu beenden, als einen Prozess zu beenden.
- Es dauert viel **weniger Zeit**, zwischen Threads innerhalb desselben Prozesses umzuschalten, als zwischen verschiedenen Prozessen umzuschalten.
- Threads ermöglichen eine **schnellere Kommunikation** zwischen Teilen desselben Prozesses, da sie Speicher und Ressourcen teilen und direkt miteinander kommunizieren können, ohne das Betriebssystem einzuschalten.
Ziel von Multiprogramming
- Das Ziel ist, die **CPU besser auszulasten**, indem jederzeit ein Prozess ausgeführt wird.
- In einem **Einprozessor-System** gibt es nie mehr als einen laufenden Prozess gleichzeitig.
- Um die CPU besser zu nutzen, werden **mehrere Prozesse gleichzeitig im Speicher** gehalten.
- Wenn ein Prozess warten muss (z. B. auf E/A), entzieht das Betriebssystem ihm die CPU und weist sie einem anderen Prozess zu.
- Fast alle Computerressourcen werden vor der Nutzung geplant; **Planung** ist bei der Gestaltung eines Betriebssystems unerlässlich.
- CPU- und E/A-Bursts: Die Ausführung eines Prozesses besteht aus einem **Zyklus** von abwechselnden **CPU-Bursts** (während derer Anweisungen ausgeführt werden) und **E/A-Bursts** (während derer der Prozess auf E/A wartet).
Präemptives Scheduling
CPU-Scheduling-Entscheidungen werden in folgenden vier Situationen getroffen:
- Wenn ein Prozess vom Zustand 'Laufend' in den Zustand 'Blockiert' wechselt.
- Wenn ein Prozess vom Zustand 'Laufend' in den Zustand 'Bereit' wechselt (z. B. Zeitüberschreitung).
- Wenn ein Prozess vom Zustand 'Blockiert' in den Zustand 'Bereit' wechselt (z. B. E/A-Abschluss).
- Wenn ein Prozess beendet wird.
Fälle 1 und 4 entsprechen **nicht-präemptivem** Scheduling. Fälle 2 und 3 entsprechen **präemptivem** Scheduling.
Bei **präemptivem Scheduling** hat der Kurzzeit-Scheduler (Betriebssystem) die Möglichkeit, einem Prozess die CPU zu entziehen (ihn in den Zustand 'Bereit' zu versetzen), z. B. aufgrund eines Zeitlimits oder der Ankunft eines Prozesses mit höherer Priorität.
Scheduling-Kriterien
- CPU-Auslastung: Prozentsatz der Zeit, in der die CPU arbeitet.
- Durchsatz (*Throughput*): Anzahl der pro Zeiteinheit abgeschlossenen Prozesse.
- Turnaround-Zeit: Zeitspanne von der Ankunft eines Prozesses bis zu seiner Beendigung.
- Wartezeit: Zeit, die ein Prozess in der Warteschlange der bereiten Prozesse verbringt.
- Reaktionszeit (*Response Time*): Zeit von der Ankunft einer Anfrage bis zur ersten Reaktion (für interaktive Systeme).
Einheit 2: Struktur und Verwaltung
Vorgeschlagene Struktur eines Betriebssystems
- Ebene 1: Elektronische Schaltungen. Register, Gatter, Busse etc. Operationen: Setzen auf 0, Übertragen, Aktivieren, Komplementieren.
- Ebene 2: Befehlssatz. Stack-Operationen, Mikrocode, skalare und vektorielle Daten. Operationen: Laden, Speichern, Addieren.
- Ebene 3: Prozeduren. Prozeduraufrufe, Call-Stack, Aktivierungsdatensätze. Operationen: Stack prüfen, Aufrufen, Zurückkehren.
- Ebene 4: Interrupts. Verwaltung von Interrupt-Handlern. Operationen: Aufrufen, Maskieren, Demaskieren, Wiederholen.
- Ebene 5: Prozessprimitive. Prozessprimitive, Semaphore, Warteschlange der bereiten Prozesse. Operationen: Aussetzen, Fortsetzen, Warten, Signal.
Speicherverwaltung
Das Betriebssystem hat fünf Hauptaufgaben bei der Speicherverwaltung:
- Prozessisolation.
- Automatische Zuweisung und Verwaltung.
- Unterstützung für modulare Programmierung und Zugriffsschutz.
- Langzeitspeicherung (Dateisysteme).
Planung und Verwaltung von Ressourcen
Jede Zuweisungs- und Verwaltungsstrategie hängt von drei Faktoren ab:
- Fairness: Gleichbehandlung bei der Zuweisung von Ressourcen.
- Reaktionsfähigkeit: Priorisierung von Anfragen nach Kategorie und Dringlichkeit.
- Effizienz: Maximierung des Durchsatzes und Minimierung der Reaktionszeit.
Sicherheit und Schutz im Betriebssystem
Behandelt Probleme der Zugriffskontrolle und Informationssicherheit. Kann generell in vier Kategorien unterteilt werden:
- Zugriff: Kontrolle des Systemzugriffs, Schutz vor Unterbrechungen.
- Vertraulichkeit: Sicherstellen, dass Benutzer keine Daten lesen können, für die sie keine Berechtigung haben.
- Datenintegrität: Schutz der Daten vor unautorisierten Änderungen.
- Authentizität: Überprüfung der Identität von Benutzern.