Speicherverwaltung: Paging und Segmentierung

Eingeordnet in Informatik

Geschrieben am in Deutsch mit einer Größe von 3,01 KB

Paging-Grundlagen

Beim Paging kann es zu Speicherverlusten kommen, wenn die Seitengröße ungünstig gewählt ist. Dies führt zu interner Fragmentierung (verschwendeter Platz innerhalb einer Seite). Die übliche Seitengröße liegt zwischen 128 und 1024 Wörtern (512 bis 8192 Bytes).

Ladealgorithmen für Seiten

  • Load-on-Demand: Eine Seite wird erst geladen, wenn ein Seitenfehler auftritt. Dies schont die Bandbreite.
  • Vorspannung (Prepaging): Seiten werden präventiv in den Hauptspeicher geladen, basierend auf der Annahme, dass sie in naher Zukunft benötigt werden.

Seitenersetzungsalgorithmen

Die Verwaltung erfolgt durch das Betriebssystem. Theoretische Ansätze sind FIFO oder LRU, während in der Praxis oft LFU oder NUR eingesetzt werden.

Segmentierung

Im Gegensatz zum Paging orientiert sich die Segmentierung an der logischen Struktur eines Programms (Prozeduren, Funktionen, Arrays). Jeder Block wird als Segment bezeichnet.

Adressübersetzung

Eine virtuelle Adresse besteht aus (Segmentnummer, Offset). Die Segmenttabelle enthält Informationen über die physische Startadresse und die Länge des Segments. Tritt ein Segmentfehler auf, ist das Segment nicht im Hauptspeicher vorhanden.

Segment-Platzierungsalgorithmen

  • First-Fit: Das Segment wird im ersten freien Speicherbereich platziert, der groß genug ist.
  • Best-Fit: Das Segment wird im kleinsten freien Bereich platziert, der ausreicht.
  • Worst-Fit: Das Segment wird im größten verfügbaren freien Bereich platziert.
  • Binary-Buddy: Speicher wird in Zweierpotenzen unterteilt, um eine effiziente Verwaltung zu ermöglichen.

Verdichtung und Ersatz

Wenn kein zusammenhängender Speicherbereich verfügbar ist, kann eine Verdichtung (Garbage Collection) durchgeführt werden, um freie Segmente zu einem großen Block zusammenzufassen. Alternativ erfolgt ein Ersatz, bei dem bestehende Segmente aus dem Speicher verdrängt werden.

Hybrid-Ansatz: Segmentierung mit Paging

Moderne Systeme kombinieren beide Ansätze, um die Nachteile der reinen Segmentierung (komplexer Austausch) zu minimieren. Segmente werden hierbei in feste Seitengrößen unterteilt. Die virtuelle Adresse ist dreidimensional: (Segmentnummer, Seitennummer, Offset).

Vergleich: Paging vs. Segmentierung

  • Sichtbarkeit: Paging ist für den Programmierer unsichtbar, Segmentierung kann sichtbar sein.
  • Fragmentierung: Paging leidet unter interner Fragmentierung, Segmentierung unter externer Fragmentierung.
  • Austausch: Paging ist aufgrund einheitlicher Blockgrößen effizienter.

Hinweis: Die Platzierungsalgorithmen nutzen in den Beispielen die Notation (Startadresse, Größe).

Verwandte Einträge: