docs: add obsidian hwr docs

This commit is contained in:
theoleuthardt 2026-04-09 11:24:56 +02:00
parent b2636f4b92
commit 850aa3455d
245 changed files with 30757 additions and 0 deletions

View file

@ -0,0 +1,121 @@
# Zusammenfassung: Scheduling
## 1. Grundlagen und Definitionen
**Was ist Scheduling?** Scheduling ist die Strategie und Methode, mit der das Betriebssystem die verfügbare Prozessorzeit (CPU-Zeit) auf die verschiedenen lauffähigen Prozesse oder Threads verteilt.
### Die drei Arten des Schedulings
1. **Kurzfristiges Scheduling (Short-Term / CPU-Scheduling):** Die Entscheidung, welcher Prozess als nächstes die CPU bekommt. (Dies ist der Fokus dieser Zusammenfassung)
2. **Mittelfristiges Scheduling:** Verwaltung des Arbeitsspeichers (Swapping, Prozess auslagern).
3. **Langfristiges Scheduling:** Entscheidung, welche Aufgaben (Jobs) überhaupt ins System zugelassen werden (Job-Queue).
### Wichtige Komponenten
- **Scheduler:** Die „Logik". Er entscheidet basierend auf einem Algorithmus, welcher Prozess als nächstes laufen darf.
- **Dispatcher:** Der „Mechaniker". Er führt den tatsächlichen Kontextwechsel durch. Er stoppt den alten Prozess, sichert den Status, lädt den neuen Status und übergibt die Kontrolle an die CPU.
- **Dispatch-Latenz:** Die Zeit, die der Dispatcher für das Umschalten braucht. Diese Zeit ist „Verlust" (Overhead) und sollte so gering wie möglich sein.
## 2. Prozess-Verhalten: Bursts
Prozesse arbeiten nicht linear. Sie wechseln ständig zwischen zwei Phasen:
1. **CPU-Burst:** Der Prozess rechnet aktiv (nutzt die CPU).
2. **E/A-Burst (I/O-Burst):** Der Prozess wartet auf Daten (Festplatte, Netzwerk, Tastatur) und nutzt die CPU nicht.
### Unterscheidung der Prozess-Typen
- **CPU-gebunden (CPU-bound):** Lange CPU-Bursts, seltenes Warten. (Beispiel: Videorendering, Simulationen)
- **E/A-gebunden (I/O-bound):** Kurze CPU-Bursts, häufiges Warten. (Beispiel: Texteditor, Webbrowser)
- **Ziel:** Ein guter Scheduler mischt diese Typen, um die Hardware optimal auszulasten.
## 3. Wann wird geschedult?
Der Scheduler muss in vier Situationen aktiv werden:
1. **Neuer Prozess:** Ein Programm wird gestartet.
2. **Prozessende:** Ein Prozess ist fertig.
3. **Blockierung:** Ein Prozess wartet auf E/A oder einen Semaphor/Mutex.
4. **Interrupt (nur bei Präemption):** Ein Hardware-Timer (Clock-Interrupt) unterbricht den laufenden Prozess.
## 4. Ziele des Schedulings
Die Ziele hängen stark von der Art des Systems ab. Es gibt oft Konflikte (z.B. Fairness vs. Effizienz).
### Allgemeine Ziele
- **Fairness:** Jeder Prozess erhält einen gerechten Anteil der CPU (Mindestzuteilung).
- **Effizienz:** Die CPU soll immer zu 100% beschäftigt sein (kein Leerlauf).
- **Balance:** Alle Systemteile (CPU, Disk, RAM) sollen ausgelastet sein.
- **Policy Enforcement:** Durchsetzung von Regeln (z.B. „Chef-Prozesse haben Vorrang").
### Spezifische Ziele nach Modus
**Batch-Systeme (Stapelverarbeitung):**
- Maximierung des Durchsatzes (Jobs pro Stunde).
- Minimierung der Durchlaufzeit (Zeit von Abgabe bis Fertigstellung).
**Interaktive Systeme (PC/Server):**
- Minimierung der Antwortzeit (Zeit bis zur ersten Reaktion auf eine Eingabe).
- Minimierung der Wartezeit in der "Bereit"-Schlange.
**Echtzeitsysteme:**
- Einhaltung von Deadlines (Fristen).
- Vorhersagbarkeit (kein Datenverlust durch Verzögerung).
## 5. Algorithmen-Konzepte: Präemptiv vs. Nicht-Präemptiv
### A. Nicht-Präemptiv (Kooperativ)
- Ein Prozess behält die CPU, bis er fertig ist, blockiert (I/O) oder sie freiwillig abgibt.
- **Vorteil:** Einfach, keine Timer-Hardware nötig.
- **Nachteil:** Ein Endlos-Schleifen-Prozess kann das ganze System einfrieren (Windows 3.1 Ära).
### B. Präemptiv (Verdrängend)
- Das OS kann einem Prozess die CPU gewaltsam entziehen.
- Benötigt Clock-Interrupts.
- Jeder Prozess erhält ein Zeitquantum (Zeitscheibe, typisch 10200 ms).
- **Faustregel:** Verhältnis Kontextwechsel zu Quantum sollte ca. 1:20 bis 1:50 betragen, um Overhead gering zu halten.
## 6. Die Scheduling-Algorithmen im Detail
### 6.1 FCFS (First Come First Serve)
- **Prinzip:** „Wer zuerst kommt, mahlt zuerst". Einfache Warteschlange (FIFO).
- **Typ:** Nicht-präemptiv.
- **Vorteil:** Sehr einfach zu implementieren.
- **Nachteil:** Konvoi-Effekt. Ein langer CPU-Prozess blockiert alle kurzen E/A-Prozesse. Führt zu schlechter Durchschnitts-Wartezeit.
### 6.2 SJF (Shortest Job First)
- **Prinzip:** Der Prozess mit dem kürzesten CPU-Burst wird als nächstes gewählt.
- **Typ:** Nicht-präemptiv.
- **Vorteil:** Garantiert die beste (minimale) durchschnittliche Wartezeit aller Verfahren.
- **Nachteil:** Die Laufzeit muss im Voraus bekannt sein (schwierig bei interaktiven Systemen). Gefahr von Starvation (Verhungern) langer Jobs, wenn immer neue kurze Jobs kommen.
### 6.3 SRTN (Shortest Remaining Time Next)
- **Prinzip:** Die präemptive Version von SJF. Wenn ein neuer Job kommt, dessen Laufzeit kürzer ist als der Rest des aktuellen Jobs, wird gewechselt.
- **Vorteil:** Sehr gut für kurze Jobs geeignet.
- **Nachteil:** Laufzeit muss bekannt sein; Overhead durch Überwachung der Restzeiten.
### 6.4 RR (Round Robin)
- **Prinzip:** Jeder Prozess bekommt die CPU für ein festes Zeitquantum (z.B. 20ms). Ist er nicht fertig, kommt er ans Ende der Schlange.
- **Typ:** Präemptiv.
- **Vorteil:** Der fairste Algorithmus. Keine Starvation. Gute Antwortzeit für Benutzer.
- **Nachteil:** Durchschnittliche Durchlaufzeit oft schlechter als SJF.
**Das Quantum-Problem:**
- **Zu groß:** RR verhält sich wie FCFS (schlechte Reaktion).
- **Zu klein:** Zu viele Kontextwechsel (CPU verbringt nur Zeit mit Umschalten, nicht mit Rechnen).
## 7. Prioritätsmechanismen
Priorität ist kein eigener Algorithmus, sondern ein Aufsatz auf andere (z.B. Priority-Queue statt FIFO).
### Hierarchie (Wer hat Vorrang?)
1. Kernel (Höchste Prio).
2. OS-Dienste / Treiber.
3. Interrupts.
4. GUI / Interaktive Apps.
5. Hintergrunddienste.
### Problem Starvation & Lösungen
Wenn Prozesse mit hoher Priorität die CPU monopolisieren, verhungern niedrige Prozesse.
- **Aging (Altern):** Die Priorität wartender Prozesse wird schrittweise erhöht.
- **Dynamische Anpassung:** Das OS beobachtet das Verhalten (z.B. Gauß-Methode oder Lotterie-Scheduling) und passt Prioritäten zur Laufzeit an.
## 8. Echtzeit-Modus (Real-Time)
Hier zählt nicht Geschwindigkeit, sondern Vorhersagbarkeit.
- **Harte Echtzeit:** Deadline muss gehalten werden (z.B. Airbag-Auslösung). Verspätung = Systemversagen.
- **Weiche Echtzeit:** Verspätung ist tolerierbar, aber Qualität sinkt (z.B. Video-Stream ruckelt).
- **Bedingung:** Das System ist nur planbar, wenn die Summe aller Prozess-Laufzeiten kleiner ist als die verfügbare CPU-Zeit.
## 9. Das große Rechenbeispiel (Klausur-relevant!)
Die Quelle vergleicht Algorithmen anhand von 5 Prozessen. Dies zeigt die Unterschiede in der Durchlaufzeit (Turnaround Time).
### Szenario
- **Prozesse:** A (Länge 12), B (6), C (7), D (2), E (9).
- **Prioritäten (0=hoch):** C(1), B(2), E(3), A(4), D(5). (Achtung: D hat niedrigste Prio!)
### A. FCFS (Reihenfolge A, B, C, D, E)
- A wartet 0, läuft 12 → Ende bei 12.
- B wartet auf A (12), läuft 6 → Ende bei 18.
- C endet bei 25.
- D endet bei 27.
- E endet bei 36.
- **Durchschnitt:** (12+18+25+27+36)/5 = **23,6**
### B. SJF (Sortiert nach Länge: D, B, C, E, A)
- D (2) läuft zuerst → Ende bei 2.
- B (6) startet bei 2 → Ende bei 8.
- C (7) startet bei 8 → Ende bei 15.
- E (9) startet bei 15 → Ende bei 24.
- A (12) startet bei 24 → Ende bei 36.
- **Durchschnitt:** (2+8+15+24+36)/5 = **17**
- **Fazit:** SJF ist der beste für den Durchsatz, aber unfair für A.
### C. Round Robin mit Priorität (Hier als Beispiel für "Worst Case")
- Im Beispiel führt dies zu vielen Wechseln und einer durchschnittlichen Zeit von 25,4.
- **Fazit:** RR ist der schlechteste für die Durchlaufzeit, aber der fairste Algorithmus.
## 10. Zusammenfassende Erkenntnisse für MC-Fragen
1. **Dispatcher vs. Scheduler:** Scheduler plant, Dispatcher schaltet.
2. **SJF:** Beste Performance, aber Gefahr von Starvation und schwer vorhersagbar.
3. **Round Robin:** Beste Fairness, Nutzung in interaktiven Systemen, abhängig vom Quantum.
4. **Batch vs. Interaktiv:** Batch will Durchsatz, Interaktiv will kurze Antwortzeiten.
5. **1:20 bis 1:50:** Das goldene Verhältnis von Overhead (Kontextwechsel) zu Nutzlast (Quantum).