Scheduling-Algorithmen¶
🔀 First Come, First Served (FCFS)¶
Strategie:
- Der erste Prozess bekommt die CPU und läuft bis zum Ende.
- Nicht-präemptiv → Ein langer Job blockiert alle anderen!
- Problem: Konvoi-Effekt → Schnelle Prozesse warten auf langsame.
queue = [P1, P2, P3] # Prozesse in Ankunftsreihenfolge
while queue:
process = queue.pop(0) # Nächster Prozess wird gewählt
execute(process) # Prozess läuft bis zum Ende
🔀 Shortest Job First (SJF)¶
Strategie:
- Immer den Prozess mit der kürzesten verbleibenden Laufzeit zuerst wählen.
- Nicht-präemptiv (ein laufender Prozess wird nicht unterbrochen).
- Problem: Starvation → Lange Prozesse können ewig warten!
🔀 Round Robin (RR)¶
Strategie:
- Jeder Prozess bekommt einen Zeitslot (z. B. 50ms), dann wird zum nächsten gewechselt.
- Präemptiv → Verhindert Starvation.
- Problem: Zu kurze Zeitscheiben verursachen viele Kontextwechsel (Overhead).
while queue:
process = queue.pop(0)
execute(process, timeslice) # Läuft für begrenzte Zeit
if process.remaining_time > 0:
queue.append(process) # Wieder in die Warteschlange
🔀 Multi-Level Feedback Queue (MLFQ)¶
Strategie:
- Mehrere Warteschlangen mit verschiedenen Prioritäten.
- Prozesse starten in hoher Priorität → Falls sie lange laufen, wandern sie in niedrigere Prioritäten.
- Optimiert für Interaktive Prozesse.
![[mlfq.svg]]