Virtuelle Speicherverwaltung: Konzepte und Strategien
Eingeordnet in Informatik
Geschrieben am in
mit einer Größe von 3,33 KB
Virtuelle Speicherverwaltung
Die Speicherverwaltung (Memory Management) ist für die effiziente Nutzung des Hauptspeichers in einer multiprogrammierbaren Umgebung verantwortlich, wenn Prozesse um Speicherressourcen konkurrieren.
Arten der Adressräume
- Tatsächliche Adressen: Beziehen sich auf den Hauptspeicher oder RAM der Maschine.
- Logische oder virtuelle Adressen: Der Speicher, den der Prozess sieht oder kennt. Jeder Prozess verfügt über seinen eigenen logischen oder virtuellen Adressraum.
Die zentrale Idee besteht darin, häufig abgerufene Daten auf Speicherebenen mit hoher Geschwindigkeit zu halten, während weniger häufig benötigte Daten auf kostengünstigeren Geräten mit höherer Kapazität gespeichert werden.
Evolution der Memory-Management-Systeme
- Feste Partitionen
- Variable Partitionierung
- Segmentierung
- Pagination (Seitennummerierung)
- Demand Paging
Memory Allocation in segmentierten Systemen
Memory-Allocation-Strategien
- First-Fit: Die Liste wird sequenziell durchlaufen, um das erste Segment oder die erste Partition zu finden, die größer als die angeforderte Größe ist.
- Best-Fit: Die Liste wird durchlaufen, um das Segment oder die Partition zu finden, die der angeforderten Größe am nächsten kommt.
- Worst-Fit: Die Liste wird durchlaufen, um das größte verfügbare Segment oder die größte Partition zu finden.
Swapping
Der Swap-Space ist ein Teil der Festplatte, der für die Verwendung durch den virtuellen Speicher-Manager des Kernels reserviert ist. Swapping bezeichnet das Auslagern eines gesamten Prozesses vom Hauptspeicher auf den Datenträger und umgekehrt.
Segmentierung
Die Segmentierung ist ein Verfahren zur Implementierung eines virtuellen Adressraums. Jeder Prozess besitzt seinen eigenen, von anderen Prozessen unabhängigen virtuellen Adressraum.
Segmente
Jedes Segment ist ein zusammenhängendes Gebiet im realen Speicher des Computers, definiert durch seine Länge, Segmentnummer und Schutzrechte.
Das Betriebssystem verwaltet eine Segmenttabelle, die für jedes Programm einzigartig ist. Adressen werden in Basis-Segmenten gespeichert, inklusive Zugriffsberechtigungen.
Aus Sicht eines Benutzers oder Compilers wird ein Prozess natürlich in Abschnitte unterteilt: Text, Daten, Stack und Heap. Dies vereinfacht die Aufgabe des Compilers und bewahrt die logische Struktur.
Vorteile
- Automatische Erweiterung bei Stack-Überlauf.
- Explizite Erweiterung von Datensegmenten (z. B. mittels
sbrk). - Unterstützung der
fork()-Funktion. - Effizientes Swapping von Prozessen.
- Implementierung von leichtgewichtigen Prozessen.
Nachteile
- Die Implementierung von
fork()ist ineffizient, da Segmente sofort und vollständig kopiert werden. - Die Speicherverdichtung kann zu Systempausen führen, die schwer von Systemabstürzen zu unterscheiden sind.
- Die Prozessgröße ist durch den tatsächlichen Speicher begrenzt, da ein Prozess vollständig im Hauptspeicher resident sein muss.