Die Memory Management Unit (MMU) ist eine Hardware-Einheit der CPU, die virtuelle Adressen in physische Speicheradressen übersetzt. Sie ist das Fundament des virtuellen Speichers: Jeder Prozess sieht einen eigenen, zusammenhängenden Adressraum, während die MMU dahinter die echten RAM-Adressen verwaltet.

Die drei Kernaufgaben

  • Adressübersetzung: Die MMU rechnet jede vom Programm erzeugte virtuelle Adresse in eine physische Adresse um.
  • Speicherschutz: Sie prüft Zugriffsrechte (lesen, schreiben, ausführen) und verhindert, dass ein Prozess auf fremde Speicherbereiche zugreift.
  • Isolierung: Prozess A kann den Speicher von Prozess B weder lesen noch verändern – ein Absturz in einem Programm trifft die anderen nicht.

Paging und die Seitentabelle

Der Speicher ist in Seiten aufgeteilt, meist 4 KiB groß (größere Seiten: 2 MiB und 1 GiB). Für jeden Prozess führt die MMU eine Seitentabelle, die virtuelle Seiten auf physische Seiten abbildet. Damit die Übersetzung nicht bei jedem Zugriff auf den RAM muss, cachet die CPU die letzten Treffer im TLB (Translation Lookaside Buffer).

Greift ein Programm auf eine Seite zu, die gerade nicht eingelagert ist, löst die MMU einen Page Fault aus – eine Exception, die als Interrupt an den Kernel geht. Dieser lädt die Seite nach oder holt sie aus dem Swap-Bereich.

Mehr als Übersetzung

Die MMU unterstützt außerdem die Address Space Layout Randomization (ASLR): Prozesse erhalten zufällige Basisadressen, was Angriffe erschwert. Eine IOMMU erweitert den Schutz auf DMA-Zugriffe von Geräten – sie übersetzt und prüft auch die Adressen, die ein DMA-Controller verwendet.

Abgrenzung zum Cache

Die MMU ist keine Cache-Hierarchie: Der Cache-Speicher beschleunigt Zugriffe transparent im Chip, die MMU ist eine vom Betriebssystem verwaltete Adressübersetzung mit Schutzfunktion. Praktisch alle modernen CPUs – x86 ebenso wie RISC-Prozessoren – besitzen eine integrierte MMU.

Verwandte Grundlagen: Virtueller Speicher, CPU.