Swapping

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

In der Informatik beschreibt Swapping [swɐpɪŋ] (engl. für Umlagerung; von englisch to swap, ‚austauschen‘) innerhalb der Speicherhierarchie das Auslagern von Daten einer höheren in eine tiefere Ebene oder das entgegengesetzte Laden. Durch Swapping sollen die Vorteile höherer Ebenen, also höhere Geschwindigkeit, und tieferer Ebenen, nämlich höhere Kapazität und kostengünstigerer Speicher, quasi gleichzeitig nutzbar gemacht werden. Das wird erkauft durch den Zeitbedarf des Swappens. Üblicherweise bezieht der Begriff sich auf die Datenverschiebung zwischen Arbeitsspeicher und Festplatte.

Arbeitsweise[Bearbeiten]

Ein- und Auslagern kompletter Prozesse

Gerade nicht benötigte Daten werden ausgelagert, um Platz im Arbeitsspeicher zu schaffen. Werden sie wieder benötigt, müssen sie wieder geladen werden (und etwas anderes muss dafür weichen). Dieser Vorgang ist Teil der Segmentierung, einer speziellen Art der Speicherverwaltung in Betriebssystemen. Die für diese Zwecke eingesetzte, im Hintergrund arbeitende Software-Routine wird auch als Swapper bezeichnet.[1]

Swapping ist ein Vorläufer des Paging, das von den meisten modernen Betriebssystemen als Basis für Virtuelle Speicherverwaltung verwendet wird.

Meist findet Swapping statt, wenn der Scheduler einen anderen Prozess aktiviert. Das Datensegment des abzulösenden Prozesses wird auf den Hintergrundspeicher geschrieben und das Datensegment des neu aktivierten Prozesses wird in den Arbeitsspeicher geladen.

Beim Swapping müssen zwei Probleme gelöst werden:

  1. Die Speicheradressen der lokalen Variablen können sich zwischen Auslagerung und erneutem Einlesen verändern, wenn sich die Größe des Speichersegmentes ändert. Das wird durch Relokation der Variablen umgangen, indem die Speicheradressen der Variablen bei jedem Einlesen neu berechnet werden.
  2. Der Speicherschutz des verwaltenden Betriebssystems, der verhindert, dass Programme den ihnen zugewiesenen Speicherbereich zum Lesen oder Schreiben verlassen können.

Beide Probleme lassen sich durch Kombination von Swapping mit Virtueller Speicherverwaltung grundsätzlich vermeiden.

Bei Betriebssystemen, die nur Segmentierung unterstützen, bilden alle ausgelagerten Speichersegmente in ihrer Gesamtheit die Auslagerungsdatei, während bei Betriebssystemen, die Paging unterstützen, alle ausgelagerten Speicherseiten die Auslagerungsdatei bilden.

Swapping versus Paging[Bearbeiten]

Moderne Betriebssysteme unterstützen typischerweise das Konzept des page cache, so dass virtueller Speicher und Festplatten-Caching über denselben Mechanismus abgearbeitet werden. "Page in" bezeichnet den Transfer von einer Datei in den Arbeitsspeicher, "page out" den Transfer vom Arbeitsspeicher in das Dateisystem. "Swap in" und "swap out" bezieht sich nur auf den Transfer zwischen dem Arbeitsspeicher und dediziertem Swap-Speicherplatz, nicht jedoch auf den Transfer anderer Dateieninhalte.

Beispiele[Bearbeiten]

  • Ein Programm mit Speicherleck verbraucht mehr Speicher, als dem System physisch zur Verfügung steht. Das System hat eine Swap-Datei und einige Speicherseiten des Programms werden dorthin ausgelagert. Man spricht hier von Swapping, da die Swap-Datei die einzige involvierte Datei ist.
  • Ein Programm öffnet eine Datei, ohne die Option für direkte Ein- und Ausgabe zu verwenden. Die Datei wird in den Dateisystem-Cache geladen. Hier spricht man von page in, da der Swap-Speicherplatz nicht berührt ist.

Einzelnachweise[Bearbeiten]

  1. What is swapper daemon in unix ?