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

8 KiB
Raw Blame History

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