Speichermanagement in Linux, Solaris und Windows 2000

Eingeordnet in Informatik

Geschrieben am in Deutsch mit einer Größe von 3,57 KB

Speicherverwaltung in Linux

Aufteilung der Seiten: Linux definiert einen Mechanismus für den Umgang mit zusammenhängenden Blöcken von Seiten, die zusammenhängenden Blöcken von Seitenrahmen entsprechen. Hierfür wird das Buddy-System verwendet, bei dem der Kernel eine Liste von Gruppen zusammenhängender Seitenrahmen mit fester Größe verwaltet.

Seitenersetzungs-Algorithmus: Der Algorithmus für die Ersetzung von Linux-Seiten basiert auf dem Clock-Algorithmus (NUR oder NRU), der mit geringem Aufwand und kleinen Änderungen an jeder Seite des Hauptspeichers arbeitet.

Speichermanagement in Solaris

Paging-System

Datenstrukturen: Für den ausgelagerten virtuellen Speicher verwendet Solaris eine Reihe von maschinenunabhängigen Datenstrukturen:

  • Tabelle der Seiten: Jeder Prozess besitzt eine Tabelle mit einem Eintrag für jeden virtuellen Speicherbereich des Prozesses.
  • Deskriptor-Plattenblöcke: Für jede mit dem Prozess verbundene Seite gibt es einen Eintrag in der Seitentabelle, der die Kopie der virtuellen Seite auf der Festplatte beschreibt.
  • Seitenrahmen-Tabelle: Beschreibt jeden Rahmen im Arbeitsspeicher, indiziert durch die Rahmennummer.

Aktualisierte Seiten: Der in Solaris verwendete Seitenersetzungs-Algorithmus ist als Zwei-Zeiger-Clock-Algorithmus bekannt. Er nutzt ein Referenz-Bit für jede Speicherseite, um festzustellen, welche Anforderungen erfüllt sind. Zwei Parameter bestimmen die Funktionsweise des Algorithmus:

  • Abtastgeschwindigkeit (Travel Speed): Die Geschwindigkeit, mit der sich die Zeiger durch die Liste der Seiten bewegen (Seiten pro Sekunde).
  • Abstand zwischen den Zeigern (Range): Der Raum zwischen dem vorderen und dem hinteren Zeiger.

Speichermanagement unter Windows 2000

Der virtuelle Speicher-Manager in Windows 2000 (W2K) steuert, wie Speicher reserviert wird und wie das Paging durchgeführt wird.

Virtuelle Adresszuordnung in W2K: Jeder W2K-Benutzerprozess besitzt einen separaten 32-Bit-Adressraum, der bis zu 4 GB Speicher pro Prozess ermöglicht. Ein Teil dieses Speichers ist für das Betriebssystem reserviert, sodass jedem Benutzer 2 GB virtueller Adressraum zur Verfügung stehen.

Paging in W2K: Beim Erstellen eines Prozesses kann prinzipiell jeder Anwender den 2-GB-Bereich nutzen. Dieser Raum ist in Seiten fester Größe unterteilt, die jeweils in den Hauptspeicher geladen werden können.

Es wird eine maximale Größe des Working Sets (WS) in Abhängigkeit von der Größe des RAM festgelegt.

Tritt ein Seitenfehler (Page Fault) auf, wird die angeforderte Seite zusammen mit einigen benachbarten Seiten geladen. Dies wird als Demand Paging mit Clustering bezeichnet.

Wenn der Speicher voll ist, kann eine LRU-Ersetzungsstrategie (Verschieben auf die Festplatte) oder FIFO (Entnahme aus dem WS, verbleibt aber im Speicher) angewendet werden.

Threads und Seitenfehler

Je nach Programmmodell (One-To-One, Many-To-One oder Many-To-Many):

  • Im Solaris-Kernel werden die LWPs (Lightweight Processes), die Page Faults (PF) verursachen, separat behandelt.
  • Unter Linux können Threads ebenfalls separat Page Faults erzeugen.
  • Die Situation unter Windows NT ist vergleichbar mit der unter Linux.

Verwandte Einträge: