Prozess-Scheduling (auch CPU-Scheduling) ist die Aufgabe des Betriebssystems zu entscheiden, welcher Prozess als Nächstes die CPU nutzen darf. Weil ein Kern immer nur eine Anweisung zurzeit ausführen kann, sorgt der Scheduler dafür, dass alle laufenden Prozesse reihum an die Reihe kommen.
Die Aufgabe des Schedulers
Der Scheduler verwaltet die Ready-Queue: eine Liste aller Prozesse, die rechenbereit sind. Bei jeder Gelegenheit — etwa nach einem Kontextwechsel, einem Interrupt oder dem Ablauf einer Zeitscheibe — wählt er den nächsten Prozess aus. Gute Scheduling-Verfahren verfolgen mehrere Ziele: Fairness (kein Prozess hungert), geringe Latenz (interaktive Anwendungen reagieren schnell), hoher Durchsatz (viele Aufgaben pro Zeiteinheit) und Planbarkeit bei Echtzeitsystemen.
Wichtige Algorithmen
- FCFS (First Come, First Served): Der Prozess, der zuerst ankommt, wird zuerst bearbeitet. Einfach, aber ein langer Prozess blockiert alle nachfolgenden.
- SJF (Shortest Job First): Der Prozess mit der kürzesten Ausführungszeit gewinnt — minimiert die durchschnittliche Wartezeit, kann aber zur Starvation langer Prozesse führen.
- Round Robin: Jeder Prozess erhält ein festes Zeitquantum (typisch 10–100 Millisekunden) und wird danach ans Ende der Warteschlange gestellt. Der Standard für interaktive Systeme.
- Prioritäts-Scheduling: Prozesse mit höherer Priorität werden zuerst bedient; niedrige Prioritäten können verhungern, falls nicht gealtert wird.
- Multilevel Feedback Queue (MLFQ): Mehrere Warteschlangen mit unterschiedlichen Prioritäten; Prozesse, die ihre Zeitscheibe verbrauchen, rutschen in eine niedrigere Stufe. Das Grundmodell moderner Betriebssysteme.
Präemptiv oder nicht-präemptiv
Beim nicht-präemptiven Scheduling behält ein Prozess die CPU, bis er selbst freiwillig abgibt (z.B. bei einer Ein-/Ausgabe). Beim präemptiven Scheduling — Grundlage des modernen Multitasking — kann der Scheduler einen Prozess nach Ablauf seiner Zeitscheibe unterbrechen und einen anderen starten.
Linux in der Praxis
Linux nutzte lange den Completely Fair Scheduler (CFS); seit Kernel 6.6 (Ende 2023) kommt EEVDF (Earliest Eligible Virtual Deadline First) zum Einsatz, das derselben Grundidee folgt: Die CPU-Zeit wird nach Gewichtung („nice“-Werte) virtuell gerecht verteilt. Interaktive Prozesse erhalten dadurch kurze Zeitscheiben, rechenintensive Jobs dürfen länger laufen.
Verwandte Grundlagen: Kontextwechsel, Multitasking, Thread, Nebenläufigkeit, Algorithmus.