💾
Betriebssysteme
  • Kursinformationen
    • Termine
  • Einheit 1: Git
    • Einheit 1: Hausaufgabe
  • Einheit 2: C Programmierung
    • Einheit 2: Hausaufgabe
  • Virtualization
    • Exercise: Process Creation
  • Speicher
    • Exercise: Memory
    • Lab 01: Stack
  • Scheduler
    • Exercise: Scheduler
  • Fortgeschrittene Scheduler
  • Fortgeschrittene Speicherverwaltung
    • Exkurs: Free List
    • Lab 02: Free List
  • Threads
    • Exkurs: Bugs durch Nebenläufigkeit
    • Exercise: Deadlock
  • Einheit 9: Semaphore
  • Einheit 10: Input / Ouput
  • Einheit 11: Harddisks & Dateisysteme
  • Einheit 12: Virtualisierung & Container Technologien
  • Einheit 13:
  • Lab 03: Semaphore
  • Lab 04: Canonical Treiber Implementierung
  • Page 1
Powered by GitBook
On this page
Edit on GitHub
  1. Fortgeschrittene Speicherverwaltung

Exkurs: Free List

PreviousFortgeschrittene SpeicherverwaltungNextLab 02: Free List

Last updated 1 year ago

  • Bisher galt die Annahme, das alle Adressräume gleich sind

  • Somit muss man »eigentlich nur« die nächste freie Lücke finden und »auffüllen«

  • Segmentierung führt nun jedoch zur Fragmentierung (engl. external fragmentation)

  • Innerhalb eines Adressraus spricht man ebenfalls von Fragmentierung (engl. internal fragmentation)

Beispiel: Heap

  • Eine Datenstruktur zur Verwaltung freier Speicherbereiche ist die sog. Free List

  • Basiert auf einer verketteten Liste (engl. linked list)

  • Anfragen für größer 10 Bytes schlagen fehl (liefert NULL)

  • Exakt 10 Bytes kann durch einen der beiden Blöcke bedient werden

  • Aber was passiert, wenn nur 1 Byte angefordert wird?

  • Einer der freien Blöcke wird verkleinert…

  • Zurück zur Ausgangssituation mit drei Blöcken…

  • Was passiert wenn der mittlere Block freigegeben wird?

  • Es entstehen drei Blöcke… keine Gute Idee…

  • Daher fasst die zuständige Bibliothek den freien Speicher vor dem Allokieren so gut wie möglich zusammen

Free List Beispiele