Skip to content

Basic-Speicherverwaltung


Segmentierung (Memory Segmentation)

📚 1️⃣ Was ist Segmentierung?

Segmentierung ist eine Speicherverwaltungsstrategie, die Adressräume in logische Segmente unterteilt, z. B.:

  • Code-Segment
  • Daten-Segment
  • Heap-Segment
  • Stack-Segment

Jedes dieser Segmente kann unabhängig an verschiedenen Stellen im physischen Speicher platziert werden.

📌 Wie funktioniert Segmentierung?

  1. Jeder Prozess hat eine Segmenttabelle, die Basisadressen und Längen speichert.
  2. Virtuelle Adresse (Segment, Offset) → Physische Adresse (Basis + Offset).
  3. Falls Offset > Länge des SegmentsFehler (Segmentation Fault).

Vorteile:

  • Programme können logisch strukturiert werden (kein zusammenhängender Speicher nötig).
  • Schutzmechanismen durch Lesen/Schreiben-Ausführungsrechte für Segmente.

🚨 Probleme:

  • Externe Fragmentierung: Speicher kann zwischen Segmenten fragmentieren.
    • Lösung: Speicherkonsolidierung (Compaction), jedoch kostenintensiv​
  • Aufwendige Speicherverwaltung: OS muss Segmentgrößen dynamisch anpassen.

🔍 Beispiel: Adressübersetzung in Segmentierung

Segment Basisadresse Länge
0 1000 400
1 1400 600
2 2000 500

Wenn die virtuelle Adresse (1, 50) gegeben ist:

  • Physische Adresse = Basisadresse[1] + Offset = 1400 + 50 = 1450.

Freispeicherverwaltung (Free Space Management)

Wenn Prozesse Speicher freigeben, entstehen Lücken im SpeicherFragmentierung!

📌 1️⃣ Methoden zur Verwaltung von freiem Speicher

  • Splitting & Coalescing:

    • Falls ein Block zu groß ist → aufteilen (Splitting).
    • Falls benachbarte Blöcke frei werden → zusammenführen (Coalescing).
    • Dynamische Speicherverwaltung mit malloc() und free()

    • malloc(size_t size): Fordert Speicher an.

    • free(void *ptr): Gibt Speicher zurück, ohne eine Größe zu benötigen​.

🛠 2️⃣ Strategien zur Speicherallokation

  • Best-Fit: Wählt den kleinsten geeigneten freien Block.
  • Worst-Fit: Wählt den größten verfügbaren Block.
  • First-Fit: Wählt den ersten passenden Block.
  • Next-Fit: Ähnlich wie First-Fit, beginnt aber die Suche an der letzten Allokationsstelle