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).