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.

Verwandte Einträge: