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

Prozesse und Scheduling im Betriebssystem

Nach dieser Lektion: Ich kann erklären, wie das Betriebssystem den Prozessor auf mehrere Prozesse verteilt.

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

Wie ein Rechner viele Programme gleichzeitig laufen lässt

Ein Prozess ist ein Programm, das gerade läuft, und das Scheduling entscheidet, welcher Prozess den Prozessor als Nächstes bekommt. Ohne diese Entscheidung bliebe ein Rechner bei einem einzigen Programm stehen.

Stellen Sie sich den Rechner im Rechenzentrum einer Hochschule vor. Er nimmt Druckaufträge an, prüft Dateien auf Viren und zeigt den Studierenden den Stundenplan. Alles scheint gleichzeitig zu geschehen, obwohl jeder Kern nur eine Sache auf einmal tut.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie das Betriebssystem den Prozessor auf mehrere Prozesse verteilt.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Prozessein laufendes Programm mit eigenem Speicher
Prozesszustandbereit, laufend oder wartendbereit
Kontextwechselder Austausch des laufenden Prozesses gegen einen anderen
Schedulerder Teil des Betriebssystems, der den nächsten Prozess wählt
Zeitscheibedie Zeit, die ein Prozess am Stück rechnen darf20 ms
Warteschlangedie Liste der Prozesse, die auf den Prozessor warten

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

Ein Prozess ist ein laufendes Programm

Ein Programm ist eine Datei auf der Festplatte. Startet jemand es, legt das Betriebssystem einen Prozess an. Der Prozess hat eigenen Speicher, eine Nummer und einen Zustand.

Auf Ihrem Laptop laufen oft über hundert Prozesse, aber der Prozessor hat nur vier oder acht Kerne. Ein Kern führt zu einem Zeitpunkt genau einen Befehl eines Prozesses aus.

Der Kern zeigt jeden Prozess als Ordner

Linux zeigt Auskünfte über Prozesse in einem Ordner namens /proc. Dort gibt es für jeden Prozess einen Unterordner mit seiner PID. /proc/self ist der Ordner des Prozesses, der gerade nachsieht.

In der Datei status steht unter anderem der Zustand. Das Programm grep liest sie in dem Moment, in dem es selbst läuft. Deshalb steht dort immer die Zeile State mit R (running).

Der Zustand von grep selbst

Befehl
grep State /proc/self/status

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

Ihre Prozesse mit Zustand

Befehl
ps -o pid,ppid,stat,comm

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

Ein Prozess ist bereit, laufend oder wartend

Ein Prozess ist in genau einem von drei Zuständen. Laufend heißt: Er rechnet gerade auf einem Kern. Bereit heißt: Er könnte rechnen, aber ein anderer Prozess hat den Kern. Wartend heißt: Er braucht erst etwas, zum Beispiel Daten von der Festplatte.

Nur der Scheduler macht einen Prozess von bereit zu laufend. Ein wartender Prozess wird nie sofort laufend, er muss erst wieder bereit sein.

Ein häufiger Fehler

Warnung

Viele glauben, ein Rechner führe hundert Prozesse zugleich aus. Ein Kern führt aber immer nur einen aus. Das System wechselt so schnell, dass es gleichzeitig wirkt. Echte Gleichzeitigkeit gibt es nur mit mehreren Kernen, und dann höchstens ein Prozess je Kern.

Ein Kontextwechsel tauscht den laufenden Prozess aus

Läuft ein Prozess nicht mehr, muss das Betriebssystem seinen Stand retten: die Werte der Register und den Befehlszähler. Es speichert sie im Prozesskontrollblock des Prozesses. Dann lädt es den Stand des nächsten Prozesses.

Diesen Austausch nennt man Kontextwechsel. Er kostet Zeit, in der kein Programm rechnet. Wechselt das System zu oft, geht viel Rechenzeit nur für das Umschalten verloren.

Freiwillige und erzwungene Wechsel

Ein Prozess gibt den Kern freiwillig ab, wenn er auf etwas wartet. Läuft seine Zeitscheibe ab, entzieht ihm das System den Kern. Das ist ein erzwungener Wechsel.

Linux zählt beides in der Datei status, in den Zeilen voluntary_ctxt_switches und nonvoluntary_ctxt_switches. Die Zahlen sind auf jeder Maschine anders. Wichtig ist, dass beide Zeilen da sind.

Die Kontextwechsel von grep zählen

Befehl
grep ctxt_switches /proc/self/status

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

Round Robin gibt jedem Prozess eine Zeitscheibe

Beim Round Robin steht jeder bereite Prozess in einer Warteschlange. Der erste bekommt den Kern für eine Zeitscheibe, zum Beispiel 2 Zeiteinheiten. Ist er danach noch nicht fertig, stellt er sich hinten wieder an. Dann kommt der nächste dran.

Alle kommen reihum dran, deshalb heißt es Round Robin. Niemand wartet ewig, aber jeder Wechsel kostet einen Kontextwechsel.

Beispiel: drei Druckaufträge, Zeitscheibe 2

ZeitLäuftRest danachWarteschlange danach
0 bis 2A (Laufzeit 5)A: 3B, C, A
2 bis 4B (Laufzeit 3)B: 1C, A, B
4 bis 5C (Laufzeit 1)C: fertigA, B
5 bis 7AA: 1B, A
7 bis 8BB: fertigA
8 bis 9AA: fertigleer

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

Linux nutzt ein eigenes, faires Verfahren

Linux benutzt für normale Prozesse ein eigenes Verfahren, das jedem Prozess einen fairen Anteil der Rechenzeit gibt. Die Idee der Zeitscheiben ist dieselbe wie beim Round Robin.

Der Aufruf unten fragt das Verfahren des eigenen Python-Prozesses ab. Er gibt die Zahl 0 aus. Das ist SCHED_OTHER, so heißt das normale Verfahren.

Welches Verfahren nutzt Linux für Sie?

Befehl
python3 -c "import os; print(os.sched_getscheduler(0))"

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.