Scheduling
Scheduling
Scheduling bedeutet, dass das Betriebssystem entscheidet, welcher Prozess oder Thread wann CPU-Zeit bekommt.
Diese Entscheidung beeinflusst:
- Reaktionszeit
- Durchsatz
- Fairness
- Wartezeit
- Systemstabilität
- Benutzererlebnis
Kooperativ und präemptiv
| Art | Beschreibung |
|---|---|
| Kooperatives Scheduling | Ein Prozess gibt die CPU freiwillig ab. |
| Präemptives Scheduling | Das Betriebssystem kann einem Prozess die CPU entziehen. |
Moderne Betriebssysteme verwenden meist präemptives Scheduling. Dadurch kann ein einzelner Prozess das System nicht so leicht blockieren.
Scheduling-Ebenen
| Ebene | Aufgabe |
|---|---|
| Long-Term Scheduling | Entscheidet, welche Jobs ins System aufgenommen werden. |
| Medium-Term Scheduling | Lagert Prozesse aus oder holt sie zurück. |
| Short-Term Scheduling | Entscheidet sehr häufig, welcher Prozess als Nächstes läuft. |
Das Short-Term Scheduling ist besonders wichtig für die gefühlte Geschwindigkeit eines Systems.
Context Switch
Bei einem Context Switch wechselt die CPU von einem Prozess oder Thread zu einem anderen.
Dabei muss das Betriebssystem:
- Register sichern
- Program Counter sichern
- Prozesszustand aktualisieren
- neuen Prozesszustand laden
- Speicher- und Verwaltungsinformationen berücksichtigen
Ein Context Switch ist notwendig, kostet aber Zeit. Zu viele Wechsel verschlechtern die Performance.
FCFS / FIFO
First Come, First Served führt Prozesse in der Reihenfolge aus, in der sie ankommen.
Vorteile:
- einfach zu verstehen
- leicht umzusetzen
- fair nach Ankunftszeit
Nachteile:
- kurze Prozesse können lange warten
- schlechte Reaktionszeit bei langen Prozessen vorne in der Warteschlange
Shortest Job First
Shortest Job First bevorzugt den Prozess mit der kürzesten erwarteten Laufzeit.
Vorteile:
- kann durchschnittliche Wartezeit senken
- gut bei bekannten Laufzeiten
Nachteile:
- Laufzeit ist oft nicht bekannt
- lange Prozesse können benachteiligt werden
Round Robin
Round Robin verwendet eine kreisförmige Warteschlange und feste Zeitscheiben.
Beispiel:
- Prozess A läuft für eine Zeitscheibe.
- Prozess B läuft für eine Zeitscheibe.
- Prozess C läuft für eine Zeitscheibe.
- Danach beginnt die Reihenfolge wieder von vorne.
Vorteile:
- faire CPU-Verteilung
- einfach zu implementieren
- gut für interaktive Systeme
Nachteile:
- kurze Prozesse können trotzdem warten
- zu kleine Zeitscheiben erzeugen viele Context Switches
- heterogene Prozesse werden nicht immer optimal behandelt
Round Robin eignet sich besonders gut, wenn Prozesse ähnlich lange laufen oder kurze Antwortzeiten wichtig sind.
Priority Scheduling
Beim Priority Scheduling erhält jeder Prozess eine Priorität. Prozesse mit höherer Priorität werden bevorzugt.
Vorteile:
- wichtige Aufgaben können bevorzugt werden
- geeignet für Systeme mit unterschiedlich kritischen Aufgaben
Nachteile:
- niedrige Prioritäten können verhungern
- falsche Prioritäten verschlechtern Fairness und Stabilität
Ein Gegenmittel gegen Starvation ist Aging: Je länger ein Prozess wartet, desto höher wird seine Priorität.
Completely Fair Scheduling
Linux verwendet mit dem Completely Fair Scheduler ein Verfahren, das CPU-Zeit möglichst fair verteilt.
Die Grundidee: Prozesse sollen langfristig ungefähr den CPU-Anteil erhalten, der ihnen zusteht.
Sicherheitsbezug
Scheduling ist auch ein Sicherheitsthema.
Beispiele:
- Ein Prozess darf das System nicht dauerhaft blockieren.
- Kritische Dienste müssen genug CPU-Zeit bekommen.
- Prioritäten können missbraucht werden.
- Timing-Verhalten kann Seitenkanäle ermöglichen.
Merksatz
Scheduling ist kontrollierte Zeitverteilung. Ein gutes Verfahren ist nicht nur schnell, sondern fair, stabil und schwer missbrauchbar.
Zuletzt aktualisiert: 6. Juni 2026