8 KiB
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
- Kurzfristiges Scheduling (Short-Term / CPU-Scheduling): Die Entscheidung, welcher Prozess als nächstes die CPU bekommt. (Dies ist der Fokus dieser Zusammenfassung)
- Mittelfristiges Scheduling: Verwaltung des Arbeitsspeichers (Swapping, Prozess auslagern).
- 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:
- CPU-Burst: Der Prozess rechnet aktiv (nutzt die CPU).
- 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:
- Neuer Prozess: Ein Programm wird gestartet.
- Prozessende: Ein Prozess ist fertig.
- Blockierung: Ein Prozess wartet auf E/A oder einen Semaphor/Mutex.
- 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 10–200 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?)
- Kernel (Höchste Prio).
- OS-Dienste / Treiber.
- Interrupts.
- GUI / Interaktive Apps.
- 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
- Dispatcher vs. Scheduler: Scheduler plant, Dispatcher schaltet.
- SJF: Beste Performance, aber Gefahr von Starvation und schwer vorhersagbar.
- Round Robin: Beste Fairness, Nutzung in interaktiven Systemen, abhängig vom Quantum.
- Batch vs. Interaktiv: Batch will Durchsatz, Interaktiv will kurze Antwortzeiten.
- 1:20 bis 1:50: Das goldene Verhältnis von Overhead (Kontextwechsel) zu Nutzlast (Quantum).