Speicherverwaltung

Aus Lowlevel
Wechseln zu:Navigation, Suche

Die Speicherverwaltung (= Memory Management) ist ein wichtiger Teil des Betriebssystems. Um genau zu sein ist es ein Grundbestandteil eines Betriebssystems und meistens sogar vollständig im Kernel enthalten.

Einleitung

Generell ist die Speicherverwaltung dafür zuständig, nachfragenden Prozessen freien Speicher zuzuteilen bzw. freizugebenden Speicher wieder zurückzunehmen. Dazu muss natürlich gespeichert werden, welche Speicherbereiche belegt bzw. frei sind. Es ist wichtig zu verstehen, dass die Speicherverwaltung normalerweise auf drei Ebenen aufgeteilt wird:

  • Die physische Speicherverwaltung verwaltet Speicherblöcke (physische Seiten) im tatsächlich verfügbaren RAM
  • Die virtuelle Speicherverwaltung baut auf der physischen Speicherverwaltung auf. Sie verwaltet Seiten im virtuellen Adressraum und deren Zuordnung zu physischen Seiten.
  • malloc/free verwalten den Heap. Im Gegensatz zu den unterliegenden Schichten, die nur in Blöcken gleicher Größe arbeiten, sind malloc/free dafür zuständig, Speicher für unterschiedlich große Objekte bereitzustellen.

Physische Speicherverwaltung

Hauptartikel: Physische Speicherverwaltung

Die Physische Speicherverwaltung bildet die unterste Ebene und ermöglicht das Allozieren und Freigeben von physischen Speicherbereichen. Meist sind diese Speicherbereiche gleich groß und richten sich nach der Seitengröße der jeweiligen Architektur. Die Seitengröße beträgt normalerweise bei der x86- und x86-64-Architektur 4 kB. Es sind dort auch 4 (x86) bzw. 2 MB (x86-64) möglich. Intern speichert die physische Speicherverwaltung, welche Speicherbereiche im physischen Speicher frei sind.

Virtuelle Speicherverwaltung

Hauptartikel: Paging

Die virtuelle Speicherverwaltung befindet sich eine Schicht über der physischen Speicherverwaltung und ist für die Organisation der Speicherbereiche im virtuellen Adressraum eines Prozesses zuständig. Unter x86 und x86-64 beispielsweise wird ein virtueller Adressraum über den Paging-Mechanismus (siehe dort für eine genauere Erklärung) realisiert. Dieser virtuelle Adressraum hat erstmal nichts mit dem physischen Adressraum gemeinsam. Erst die virtuelle Speicherverwaltung stellt durch Ein- und Ausblenden von physischen Speicherseiten in den virtuellen Adressraum diese Verbindung her und blendet die Sektionen des Prozessimage (Code, Daten, nicht initialisierte Daten, ...), den Heap, den Stack, benötigte shared-libraries, shared-memory, auch den Kernel, etc. in den virtuellen Adressraum ein oder aus. Die dafür benötigten physischen Speicherseiten werden der physischen Speicherverwaltung entnommen.

Die virtuelle Speicherverwaltung übernimmt in einem Multiprozessorsystem auch die Aufgabe, die virtuellen Adressräume über mehrere Prozessoren hinweg konsistent zu halten (siehe auch SMP).

Heapverwaltung

Hauptartikel: Heapverwaltung

Die Heapverwaltung stellt auf der virtuellen Speicherverwaltung aufbauend Funktionen zur Verwaltung von dynamisch allozierten Speichers beliebiger Größe, wie beispielsweise malloc/free der C-Standardbibliothek zur Verfügung.

Weblinks