Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Scheduling-Verfahren: FCFS, SJF und Round Robin

Nach dieser Lektion: Ich kann FCFS, SJF und Round Robin über die mittlere Wartezeit vergleichen.

Lektion, 55 Min.3 BefehleLab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Welches Scheduling-Verfahren ist das beste?

Ein Scheduling-Verfahren legt fest, in welcher Reihenfolge Prozesse den Prozessor bekommen, und jedes Verfahren bevorzugt andere Prozesse. Mit der Wartezeit und der Durchlaufzeit vergleichen Sie die Verfahren fair.

Denken Sie an die Kasse in der Mensa. Wer nur einen Becher Wasser hat, ärgert sich über das volle Tablett vor sich. Die drei Verfahren dieser Lektion lösen genau dieses Problem auf verschiedene Weise.

Am Ende dieser Lektion

Notiz

Ich kann FCFS, SJF und Round Robin über die mittlere Wartezeit vergleichen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Laufzeitdie Zeit, die ein Prozess zum Rechnen braucht8
Wartezeitdie Zeit, in der ein Prozess bereit ist und nicht rechnet
Durchlaufzeitdie Zeit vom Eintreffen bis zum Ende des Prozesses
FCFSfirst come, first served: Wer zuerst kommt, rechnet zuerst
SJFshortest job first: Der kürzeste Auftrag rechnet zuerst
Konvoi-Effektein langer Prozess lässt alle kurzen dahinter warten

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Wartezeit und Durchlaufzeit messen den Preis

Die Laufzeit ist die Zeit, die ein Prozess zum Rechnen braucht. Die Wartezeit ist die Zeit, in der er bereit ist, aber nicht rechnet. Die Durchlaufzeit reicht vom Eintreffen bis zum Ende.

Die Durchlaufzeit ist Wartezeit plus Laufzeit. Treffen alle Prozesse zur Zeit 0 ein und läuft jeder ohne Unterbrechung, ist die Wartezeit einfach der Zeitpunkt, an dem er startet.

FCFS lässt jeden Prozess bis zum Ende rechnen

Beim FCFS (first come, first served) rechnen die Prozesse in der Reihenfolge, in der sie ankommen. Jeder rechnet bis zum Ende, niemand wird unterbrochen. Das ist einfach zu bauen.

Der Nachteil ist der Konvoi-Effekt. Kommt zuerst ein langer Prozess, müssen alle kurzen dahinter lange warten.

Beispiel: vier Aufträge nach FCFS

AuftragLaufzeitStartEndeWartezeit
A8080
B28108
C4101410
D2141614
Mittelwert12 (Durchlaufzeit)8

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

SJF rechnet den kürzesten Auftrag zuerst

Beim SJF (shortest job first) wählt der Scheduler unter den bereiten Prozessen immer den mit der kleinsten Laufzeit. Kurze Aufträge ziehen an langen vorbei, und die mittlere Wartezeit wird klein. Bei bekannten Laufzeiten ist sie sogar die kleinste, die es gibt.

Der Haken: Das System kennt die Laufzeit vorher nicht und kann sie nur schätzen. Außerdem können lange Prozesse verhungern, wenn ständig kürzere eintreffen.

Beispiel: dieselben Aufträge nach SJF

AuftragLaufzeitStartEndeWartezeit
B2020
D2242
C4484
A88168
Mittelwert7,5 (Durchlaufzeit)3,5

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, das Verfahren mit der kleinsten mittleren Wartezeit sei immer das beste. SJF braucht aber Laufzeiten, die niemand sicher kennt, und lässt lange Prozesse verhungern. Ein Programm mit Benutzeroberfläche braucht schnelle Antworten. Wählen Sie die Kennzahl passend zum Ziel.

Round Robin tauscht Wartezeit gegen Fairness

Round Robin unterbricht jeden Prozess nach einer Zeitscheibe. Dadurch muss kein kurzer Prozess auf einen langen warten. Die mittlere Wartezeit ist meist größer als bei SJF, aber niemand wartet ewig.

Die Zeitscheibe muss gut gewählt sein. Ist sie sehr groß, wird Round Robin zu FCFS. Ist sie sehr klein, gehen viele Kontextwechsel auf Kosten der Rechenzeit.

Beispiel: dieselben Aufträge nach Round Robin

AuftragLaufzeitEndeDurchlaufzeitWartezeit
A816168
B2442
C412128
D2886
Mittelwert106

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Linux gewichtet Prozesse mit dem Nice-Wert

Unter Linux stellen Sie mit nice ein, wie rücksichtsvoll ein Prozess gegenüber anderen ist. Ein höherer Wert heißt: Der Prozess lässt anderen den Vortritt. Der normale Wert ist 0. Nur root darf negative Werte setzen.

Mit -n 5 startet nice ein Programm mit dem Wert 5. Im Befehl unten ist dieses Programm wieder nice. Es gibt den Wert aus, den es geerbt hat.

Einen Prozess mit Nice-Wert 5 starten

Befehl
nice -n 5 nice

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die mittlere Wartezeit nach FCFS nachrechnen

Befehl
python3 -c "b = [8, 2, 4, 2]; print(sum(sum(b[:i]) for i in range(len(b))) / len(b))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Dieselbe Rechnung, kürzester Auftrag zuerst

Befehl
python3 -c "b = sorted([8, 2, 4, 2]); print(sum(sum(b[:i]) for i in range(len(b))) / len(b))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Über dieses Lab und seinen Quellcode: Lab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.