Speicherverwaltung: Paging und Segmentierung im Vergleich

InformatikAktualisiert am 4,55 KB

Zusammenfassung

Das Dokument erläutert, wie ein Betriebssystem Seitenfehler behandelt und wie Seitentabellen aufgebaut sind, inklusive Kontrollbits und Speicherung. Außerdem werden der Translation Lookaside Buffer, das gemeinsame Nutzen von Speicher durch Paging und die Unterschiede zwischen Paging und Segmentierung erklärt.

Kernpunkte

  • Bei einem Seitenfehler sucht das Betriebssystem einen freien Seitenrahmen, lagert gegebenenfalls einen Opferrahmen aus und lädt die benötigte Seite von der Festplatte.
  • Seitentabellen können in Registern oder im Hauptspeicher liegen; Register sind schnell, aber bei großen Tabellen unpraktisch.
  • Im Hauptspeicher braucht jeder Speicherzugriff zwei Zugriffe, was den Zugriff verlangsamt.
  • Das Present-Bit gibt an, ob sich eine Seite im RAM oder im Swap-Bereich befindet.
  • Der TLB ist ein schneller assoziativer Cache für zuletzt verwendete Adressübersetzungen und hat typischerweise 64 bis 2048 Einträge.
  • Bei der Segmentierung haben Segmente variable Länge, bei Paging feste Seitengrößen.

Stellen Sie sich auf die Probe

Seitenfehlerbehandlung

Der Prozess zur Behandlung eines Seitenfehlers (Page Fault) läuft wie folgt ab:

  1. Die Hardware löst einen Trap aus und sichert den Programmzähler (PC).
  2. Der Trap-Handler (Interrupt-Routine) sichert die Prozessorregister.
  3. Das Betriebssystem erkennt, dass ein Seitenfehler aufgetreten ist.
  4. Das Betriebssystem sucht nach einem freien Seitenrahmen im Hauptspeicher. Wenn keiner verfügbar ist, wird ein „Opferrahmen“ ausgewählt und dessen Inhalt bei Bedarf auf die Festplatte ausgelagert.
  5. Ein E/A-Vorgang wird gestartet, um die benötigte Seite von der Festplatte in den freien Seitenrahmen zu laden.
  6. Nach Abschluss des Ladevorgangs signalisiert ein Festplatten-Interrupt die Verfügbarkeit der Seite. Der Prozess, der den Fehler verursacht hat, wird wieder in die Warteschlange der ausführbereiten Prozesse eingereiht.

Seitentabellen

Bei jedem Kontextwechsel muss die Seitentabelle des alten Prozesses gesichert und die des neuen Prozesses geladen werden. Die Seitentabelle kann an verschiedenen Orten gespeichert werden:

Speicherung in Registern

  • Vorteil: Sehr schneller Zugriff.
  • Nachteil: Bei großem Arbeitsspeicher wird die Seitentabelle sehr groß und passt möglicherweise nicht in die verfügbaren Register.
  • Nachteil: Bei einem Kontextwechsel müssen die Werte aller Register ausgetauscht werden, was aufwendig ist.

Speicherung im Hauptspeicher

  • Vorteil: Keine Platzprobleme, da der Hauptspeicher groß genug ist.
  • Vorteil: Bei einem Kontextwechsel muss nur ein einziges Register (der Zeiger auf die aktuelle Seitentabelle) geändert werden.
  • Nachteil: Langsamerer Zugriff, da pro Speicherzugriff zwei Zugriffe erforderlich sind (einer auf die Seitentabelle, einer auf die eigentlichen Daten).

Zusätzliche Informationen in der Seitentabelle

Ein Seitentabelleneintrag enthält neben der Rahmennummer weitere von der Hardware genutzte Kontrollbits:

  • Present-Bit: Gibt an, ob sich die Seite im Hauptspeicher (RAM) oder im Swap-Bereich auf der Festplatte befindet.
  • User/Supervisor-Bit: Legt fest, ob auf die Seite im Benutzermodus zugegriffen werden darf.
  • Read/Write/Execute-Bits: Definieren die erlaubten Zugriffsarten (Lesen, Schreiben, Ausführen).
  • Weitere Bits für das Betriebssystem: Zähler für Referenzen, Zugriffs-Flags (Accessed/Dirty Bits) etc.

Die CPU arbeitet mit logischen Adressen, nicht mit physischen. Die Umwandlung erfolgt durch die Memory Management Unit (MMU).

Translation Lookaside Buffer (TLB)

Um die Adressübersetzung zu beschleunigen, insbesondere wenn Seitentabellen im langsamen Hauptspeicher liegen, wird ein TLB verwendet. Dies ist ein schneller, assoziativer Cache, der die zuletzt verwendeten Übersetzungen von logischen zu physischen Adressen speichert. Ein typischer TLB hat zwischen 64 und 2048 Einträge.

Gemeinsamer Speicher durch Paging

Paging ermöglicht es, physischen Speicher effizient zwischen mehreren Prozessen zu teilen. Dabei können die Seitentabellen verschiedener Prozesse auf dieselben physischen Seitenrahmen verweisen. Dies verbessert die Speicherauslastung und die Systemgeschwindigkeit, da gemeinsam genutzte Programmbibliotheken nur einmal in den Speicher geladen werden müssen.

Paging vs. Segmentierung

  • Beim Paging muss der Compiler nichts über die Speicheraufteilung wissen; er erzeugt einen kontinuierlichen logischen Adressraum. Bei der Segmentierung hingegen muss der Compiler Adressen für logisch zusammengehörige, unterschiedlich große Segmente generieren.
  • Ähnlich der Seitentabelle kann auch die Segmenttabelle in Registern oder im Hauptspeicher liegen. Im letzteren Fall zeigt ein spezielles Register auf den Beginn der Tabelle.
  • Die Segmentierung spiegelt die logische Struktur eines Programms wider (z. B. Code, Daten, Stack). Dies vereinfacht das Teilen von ganzen Segmenten (z. B. Code-Bibliotheken) zwischen Prozessen. Beim reinen Paging ist dies konzeptionell aufwendiger.
  • Im Gegensatz zu Seiten fester Größe beim Paging sind Segmente bei der Segmentierung von variabler Länge. Jedes Segment muss als Ganzes in einem zusammenhängenden Bereich des physischen Speichers untergebracht werden.

Herunterladen

PDF Word HTML

Häufige Fragen

Was passiert bei einem Seitenfehler?

Die Hardware löst einen Trap aus, das Betriebssystem findet oder schafft einen freien Seitenrahmen und lädt die benötigte Seite von der Festplatte. Danach wird der Prozess wieder in die Warteschlange der ausführbereiten Prozesse eingereiht.

Was ist der Unterschied zwischen Paging und Segmentierung?

Paging teilt den Speicher in Seiten fester Größe, während Segmentierung Segmente variabler Länge verwendet, die der logischen Struktur des Programms entsprechen. Beim Paging weiß der Compiler nichts über die Aufteilung, bei der Segmentierung muss er Adressen für Segmente erzeugen.

Wozu dient der Translation Lookaside Buffer?

Der TLB ist ein schneller assoziativer Cache, der zuletzt verwendete Übersetzungen von logischen zu physischen Adressen speichert. So wird die Adressübersetzung beschleunigt, wenn die Seitentabellen im langsamen Hauptspeicher liegen.

Stellen Sie sich auf die Probe

Lernkarten

Tippen Sie auf eine Karte, um die Antwort zu sehen.

Test

1. Was geschieht zuerst, wenn ein Seitenfehler auftritt?
2. Was gibt das Present-Bit an?
3. Welcher Nachteil entsteht, wenn Seitentabellen im Hauptspeicher liegen?
4. Wie groß ist ein typischer TLB laut Text?
5. Was unterscheidet Segmente von Seiten bei der Segmentierung?
6. Warum lässt sich bei Segmentierung das Teilen ganzer Code-Bibliotheken leichter umsetzen?

Mit KI aus dem Dokument erstellte Fragen: Prüfen Sie die Antworten anhand des Textes.