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

Seitenersetzung: FIFO und LRU

Nach dieser Lektion: Ich kann Seitenersetzung mit FIFO und LRU Schritt für Schritt simulieren.

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

Welche Seite fliegt aus dem Speicher?

Seitenersetzung entscheidet, welche Seite das Betriebssystem aus dem Arbeitsspeicher wirft, wenn ein Rahmen gebraucht wird und alle belegt sind. Eine schlechte Wahl erzeugt viele Seitenfehler, und jeder kostet so viel Zeit wie tausende normale Zugriffe.

Sie kennen das vom Schreibtisch in der Bibliothek. Er hat drei Plätze für Bücher, und das Magazin ist weit weg. Jedes Buch, das Sie holen, verdrängt eines der drei.

Am Ende dieser Lektion

Notiz

Ich kann Seitenersetzung mit FIFO und LRU Schritt für Schritt simulieren.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Seitenfehlerein Zugriff auf eine Seite, die nicht im Speicher liegt
Trefferein Zugriff auf eine Seite, die schon im Speicher liegt
Zugriffsfolgedie Reihe der Seitennummern, die ein Programm benutzt1 2 3 1
FIFOfirst in, first out: Die älteste Seite fliegt hinaus
LRUleast recently used: Die am längsten unbenutzte Seite fliegt hinaus
Swap-BereichPlatz auf der Festplatte für ausgelagerte Seiten

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

Bei vollem Speicher muss eine Seite weichen

Der Arbeitsspeicher hat nur eine feste Zahl von Rahmen. Braucht ein Prozess eine Seite, die nicht darin liegt, und alle Rahmen sind belegt, muss eine andere Seite gehen. Das Ersetzungsverfahren wählt diese Opferseite.

Gut ist ein Verfahren, das später möglichst wenige Seitenfehler macht. Die Zukunft kennt das System nicht. Deshalb rät jedes Verfahren anhand der Vergangenheit.

Nicht jeder Seitenfehler liest die Festplatte

Ein Hauptfehler liest die Seite von der Festplatte und dauert Millisekunden. Ein Nebenfehler findet die Seite schon irgendwo im Speicher und muss nur die Tabelle anpassen.

Linux zählt beide seit dem Start des Rechners. In /proc/vmstat heißt der Zähler für alle Fehler pgfault und der für die Hauptfehler pgmajfault. Beide Zahlen sind auf jeder Maschine anders, pgfault ist viel größer.

Die Seitenfehler seit dem Start zählen

Befehl
grep -E "^pg(maj)?fault " /proc/vmstat

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 Fehler Ihrer Shell ansehen

Befehl
ps -o pid,min_flt,maj_flt,comm -p $$

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

FIFO wirft die älteste Seite hinaus

Bei FIFO (first in, first out) wirft das System die Seite hinaus, die am längsten im Speicher liegt. Es merkt sich nur die Reihenfolge, in der die Seiten hereinkamen. Das ist einfach zu bauen.

Der Nachteil: Eine Seite kann alt und trotzdem ständig in Gebrauch sein. FIFO wirft sie dennoch hinaus, und kurz darauf folgt der nächste Seitenfehler.

Beispiel: FIFO mit drei Rahmen

ZugriffRahmen danach (älteste links)Seitenfehler?
11ja
21 2ja
31 2 3ja
11 2 3nein, Treffer
42 3 4ja, die 1 fliegt hinaus
13 4 1ja, die 2 fliegt hinaus
24 1 2ja, die 3 fliegt hinaus

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

LRU wirft die am längsten unbenutzte Seite hinaus

Bei LRU (least recently used) wirft das System die Seite hinaus, die am längsten nicht benutzt wurde. Die Annahme: Wer eine Seite gerade benutzt hat, braucht sie bald wieder. Man nennt das Lokalität.

LRU macht meist weniger Seitenfehler als FIFO. Es muss aber bei jedem Zugriff die Reihenfolge ändern. Das ist teuer, deshalb nutzen echte Systeme Näherungen.

Beispiel: LRU mit denselben Zugriffen

ZugriffRahmen danach (älteste links)Seitenfehler?
11ja
21 2ja
31 2 3ja
12 3 1nein, die 1 rückt nach hinten
43 1 4ja, die 2 fliegt hinaus
13 4 1nein, Treffer
24 1 2ja, die 3 fliegt hinaus

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

Ein häufiger Fehler

Warnung

Viele glauben, mehr Rahmen bedeuten bei jedem Verfahren weniger Seitenfehler. Bei FIFO stimmt das nicht immer. Die Folge 1 2 3 4 1 2 5 1 2 3 4 5 macht mit drei Rahmen 9 Fehler und mit vier Rahmen 10. Das heißt Belady-Anomalie. LRU hat dieses Problem nicht.

Ausgelagerte Seiten landen im Swap-Bereich

Eine Seite, die ein Rahmen räumen muss und die verändert wurde, schreibt das System in den Swap-Bereich auf der Festplatte. Sonst gingen die Änderungen verloren.

Der Befehl free -m zeigt Arbeitsspeicher und Swap in Mebibyte. Er hat die Zeilen Mem und Swap und je Zeile Spalten wie total, used und free. Hat die Maschine keinen Swap, steht dort 0.

Speicher und Swap ansehen

Befehl
free -m

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.