Ein Seitenrahmen (engl. page frame) ist ein Block physischen Arbeitsspeichers fester Größe, in den das Betriebssystem eine virtuelle Speicherseite lädt. Während die Seite die Einheit des virtuellen Adressraums ist, ist der Rahmen der dazugehörige physische Speicherplatz.

Seite und Rahmen

Klassisch sind Seiten und Rahmen 4 KiB groß. Die MMU bildet jede virtuelle Seite über die Seitentabelle auf genau einen Rahmen ab. Jede Seite kann in jedem freien Rahmen liegen, zusammenhängende virtuelle Seiten müssen physisch nicht benachbart sein. So entsteht aus verstreuten Rahmen ein lückenloser virtueller Speicher.

Wer verwaltet die Rahmen?

Das Betriebssystem führt eine Übersicht freier Rahmen. Bei der Allokation kommen unterschiedliche Verfahren zum Einsatz:

  • Bitmap-Allocator: Ein Bit je Rahmen zeigt an, ob er belegt ist.
  • Buddy-Allocator: Rahmen werden in Zweierpotenzen zusammengefasst und bei Bedarf geteilt – das Standardverfahren des Linux-Kernels.
  • Freiliste: Eine verkettete Liste freier Rahmen, aus der bei Bedarf entnommen wird.

Rahmen im Zusammenspiel

Fehlt ein freier Rahmen, muss das System eine Seite verdrängen – das verursacht einen Seitenfehler. Wie viele Rahmen ein Prozess braucht, beschreibt sein Working Set; werden es zu wenige, droht Thrashing. Moderne Systeme unterstützen neben 4-KiB-Rahmen auch Huge Pages mit 2 MiB oder 1 GiB, um die TLB-Abdeckung zu erhöhen.

Verwandte Grundlagen: Memory Paging, Seitenfehler, Working Set, TLB.