hwr-notes/Betriebssysteme/Zusammenfassung_Scheduling.md
2026-04-09 11:24:56 +02:00

121 lines
No EOL
8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).