Demand Paging (deutsch: bedarfsgesteuertes Nachladen) ist das Prinzip, Speicherseiten eines Programms erst dann aus dem virtuellen Speicher in den RAM zu laden, wenn das Programm sie tatsächlich anspricht. Programme müssen so nie vollständig im Arbeitsspeicher liegen.
Warum Demand Paging?
Beim Start eines großen Programms wird nicht der gesamte Code benötigt – viele Funktionen laufen nie oder erst später. Würde das System alles auf einmal laden, verschwendete es RAM und verlängerte den Start. Demand Paging lädt stattdessen nur die aktuell gebrauchten Seiten, was den Speicherbedarf deutlich senkt und mehr Prozesse gleichzeitig laufen lässt.
Technisch setzt das Memory Paging voraus: Die Seitentabelle markiert noch nicht geladene Seiten als nicht vorhanden. Greift das Programm darauf zu, meldet die CPU einen Seitenfehler, und das Betriebssystem lädt genau diese Seite nach.
Effekte in der Praxis
- Lazy Loading: Nur wirklich genutzte Code- und Datenbereiche belegen RAM.
- Schneller Start: Weniger Festplattenzugriffe beim Programmstart.
- Copy-on-Write: Nach
fork()teilen sich Eltern- und Kindprozess zunächst dieselben Seiten; erst beim Schreiben wird eine Kopie erzeugt – ein Spezialfall des verzögerten Ladens. - Mapped Dateien: Dateien lassen sich als Speicherbereich einblenden (
mmap); Seiten werden bei Bedarf aus der Datei gelesen.
Kehrseite: Bei zu wenig RAM kann das ständige Nachladen in Thrashing umschlagen, wenn das System mehr Zeit mit Seitenfehlern verbringt als mit produktiver Arbeit.
Verwandte Grundlagen: Seitenfehler, Virtueller Speicher, Swap, MMU.