Memory Paging (auch einfach Paging) ist das Verfahren, mit dem Betriebssysteme den virtuellen Speicher jedes Prozesses in gleich große, typisch 4 KiB große Blöcke zerlegen – die Seiten (engl. pages). Die physische Adresse einer Seite wird erst beim Zugriff über die Memory Management Unit (MMU) zugeordnet.

So funktioniert Paging

Der virtuelle Adressraum wird in Seiten fester Größe unterteilt, der physische Speicher in gleich große Seitenrahmen (engl. page frames). Eine Seitentabelle pro Prozess bildet jede virtuelle Seite auf einen physischen Rahmen ab. Ein Eintrag enthält neben der Rahmen-Adresse auch Status-Bits, etwa present (im RAM), dirty (verändert) und Zugriffsrechte.

Die Adressübersetzung übernimmt die MMU in Hardware. Damit nicht jede Übersetzung die Seitentabelle im langsamen RAM lesen muss, hält der Translation Lookaside Buffer (TLB) die zuletzt genutzten Zuordnungen als schnellen Cache.

Warum Paging wichtig ist

  • Jeder Prozess bekommt einen eigenen, isolierten Adressraum – ein Prozess kann nicht in den Speicher eines anderen schreiben.
  • Nur die gerade benötigten Seiten liegen im RAM; der Rest wartet auf der Festplatte – Grundlage des virtuellen Speichers.
  • Nicht zusammenhängende physische Rahmen erscheinen dem Prozess als lückenloser Speicher – Speicherfragmentierung wird vermieden.

Seitengrößen und Huge Pages

Klassisch sind Seiten 4 KiB groß. Moderne x86-64-Systeme unterstützen zusätzlich Huge Pages mit 2 MiB oder 1 GiB: Eine einzige TLB-Zuordnung deckt dann deutlich mehr Speicher ab, was bei großen Working Sets (Datenbanken, virtuellen Maschinen) die Leistung spürbar verbessert. Linux aktiviert sie teils automatisch als Transparent Huge Pages.

Ist eine angeforderte Seite nicht im RAM, löst die CPU einen Seitenfehler aus. Lädt das System Seiten erst bei Bedarf nach, spricht man von Demand Paging.

Verwandte Grundlagen: Virtueller Speicher, Swap, Cache-Speicher.