Skip to content

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!
while jobs:
    shortest_job = min(jobs, key=lambda x: x.runtime)
    execute(shortest_job)

🔀 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]]