Skip to content

Address Translation (Adressübersetzung & Virtual Memory)


📚 1️⃣ Warum brauchen wir Adressübersetzung?

Betriebssysteme nutzen virtuelle Speicheradressen, die zur physischen Speicheradresse umgerechnet werden.
Das sorgt für mehr Sicherheit & Flexibilität:

  • 🔹 Schutz: Prozesse können nicht auf andere Speicherbereiche zugreifen.
  • 🔹 Speichereffizienz: Speicher kann dynamisch verwaltet werden.

🔍 2️⃣ Adressübersetzung: Virtuell → Physisch

📌 Direkte Adressübersetzung durch Hardware
Die CPU übersetzt virtuelle Adressen in physische Adressen mithilfe von Page Tables oder TLBs (Translation Lookaside Buffers).

Beispiel für eine einfache Adressübersetzung:

    movl 0x0(%ebx), %eax   ; Lade Wert aus Speicheradresse in Register
    addl $0x03, %eax       ; Addiere 3
    movl %eax, 0x0(%ebx)   ; Speicher den neuen Wert

🔹 Die Adresse im Register %ebx wird von der Page Table in die physische Adresse übersetzt.


⚙️ 3️⃣ Dynamische Speicherverwaltung: Base & Bounds Register

📌 Base Register

  • Speichert die Startadresse eines Prozesses im physischen Speicher.
  • Die virtuelle Adresse wird einfach um diesen Wert verschoben.

📌 Bounds Register

  • Speichert die maximale erlaubte Adresse.
  • Falls ein Prozess außerhalb seines erlaubten Bereichs liest/schreibt, wird er gestoppt.

Beispiel:

    movl 0x0(%ebx), %eax  ; Virtuelle Adresse  Physische Adresse
    addl $0x03, %eax      ; 3 addieren
    movl %eax, 0x0(%ebx)  ; Speichern

Die Hardware übersetzt %ebx + Base Register → Physische Adresse


🔥 4️⃣ Speicherorganisation & Segmentierung

In modernen Systemen gibt es verschiedene Methoden, den Speicher zu verwalten:

Paging (Seitenbasiertes Speicherlayout)

  • Speicher wird in gleich große Seiten unterteilt (z. B. 4KB pro Seite).
  • Der Page Table verwaltet die Zuordnung zwischen virtuellen Seiten und physischem Speicher.

Segmentation (Segmentbasiertes Speicherlayout)

  • Speicher ist in variable große Segmente unterteilt (Code, Heap, Stack).
  • Segmente können sich dynamisch vergrößern/verkleinern.

Swapping

  • Falls der physische Speicher voll ist, kann das OS Speicherbereiche auf die Festplatte auslagern.
  • Das sorgt für virtuellen Speicher, verlangsamt aber Programme.

🚀 5️⃣ Fazit: Warum ist Adressübersetzung wichtig?

  • 🛡️ Schutz: Kein unautorisierter Zugriff auf Speicher.
  • Effizienz: Betriebssystem kann Speicher intelligent verwalten.
  • 🔄 Flexibilität: Prozesse können im Speicher verschoben werden, ohne ihre Adresse ändern zu müssen.