- Swapping
-
In der Informatik beschreibt Swapping [swɐpɪŋ] (engl. für Umlagerung; von englisch to swap, ‚austauschen‘) innerhalb der Speicherpyramide das Auslagern von Daten einer höheren in eine tiefere Ebene oder das entgegengesetzte Laden. Mit dem Swapping wird beabsichtigt, 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 zu machen. Dies wird erkauft durch den Zeitbedarf des Swappens. Üblicherweise bezieht man sich auf die Datenverschiebung zwischen Arbeitsspeicher und Festplatte.
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. Das für diese Zwecke eingesetzte, im Hintergrund arbeitende Computerprogramm wird auch als Swapper bezeichnet.[1]
Swapping ist ein Vorläufer des Paging, welches von den meisten modernen Betriebssystemen als Basis für Virtuelle Speicherverwaltung verwendet wird.
Meist findet das Swapping statt, wenn der Scheduler einen anderen Prozess aktiviert. Das Datensegment des neu aktivierten Prozesses wird in den Arbeitsspeicher geladen, während das Datensegment des abgelösten Prozesses auf den Hintergrundspeicher geschrieben wird.
Beim Swapping müssen zwei Probleme gelöst werden:
- Die Speicheradressen der lokalen Variablen können sich zwischen Auslagerung und erneutem Einlesen verändern, wenn sich die Größe des Speichersegmentes ändert. Dies wird durch Relokation der Variablen umgangen, indem die Speicheradressen der Variablen bei jedem Einlesen neu berechnet werden.
- Der Speicherschutz des verwaltenden Betriebssystems, der verhindert, dass Programme den ihnen zugewiesenen Speicherbereich zum Lesen oder Schreiben verlassen können.
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
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
- 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
Wikimedia Foundation.