Loading AI tools
Aus Wikipedia, der freien Enzyklopädie
In der Informatik beschreibt Swapping [ ] (englisch 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. Üblicherweise bezieht der Begriff sich auf die Datenverschiebung zwischen Arbeitsspeicher und Festplatte.
Swapping ist meist in Form einer Auslagerungsdatei oder einer Swap-Partition praktisch umgesetzt.
Ist kein freier Arbeitsspeicher mehr verfügbar um eine Anfrage zu bedienen, so werden gerade nicht benötigte Daten 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). Die für diese Zwecke eingesetzte, im Hintergrund arbeitende Software-Routine wird auch als Swapper bezeichnet. Swapping wurde zunächst kombiniert mit der Segmentierung, einer speziellen Art der Speicherverwaltung in Betriebssystemen. Swapping gab es schon vor dem Paging, das von den meisten modernen Betriebssystemen als Basis für Virtuelle Speicherverwaltung verwendet wird. Swapping und Paging werden heute meist miteinander kombiniert.
Häufig findet Swapping statt, wenn der Scheduler einen anderen Prozess aktiviert, da der andere Prozess nun seine Daten benötigt, während auf die des vorherigen nun länger nicht mehr zugegriffen wird.
Beim Swapping müssen zwei Probleme gelöst werden:
Beide Probleme lassen sich auch durch Kombination von Swapping mit virtueller Speicherverwaltung lösen.
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.
Virtueller Speicher und Festplatten-Caching können prinzipiell über denselben Mechanismus abgearbeitet werden, was moderne Betriebssysteme typischerweise unterstützen. Eine geöffnete Datei kann als Teil des Adressraums eingeblendet werden – tatsächlich eingelesen („swap-in“) werden nur jene Bereiche, auf die die Anwendung tatsächlich zugreift. Umgekehrt wird „Speichern“ einfach zu einem „swap out“-Vorgang.
Mitunter wird sprachlich abgegrenzt, dass „swap in“ und „swap out“ sich nur auf den Transfer zwischen dem Arbeitsspeicher und dediziertem Swap-Speicherplatz beziehen würde, nicht jedoch auf den Transfer anderer Dateieninhalte, wohingegen „page in“ einen beliebigen Transfer von einer Datei in den Arbeitsspeicher, „page out“ einen (beliebigen) Transfer vom Arbeitsspeicher in das Dateisystem bezeichne.
Das Betriebssystem jedes Computers verwaltet einen Speicherbereich, in dem die Daten, die der Rechner gerade benötigt, abgelegt werden. Diesen Bereich nennt man RAM (Random Access Memory). In bestimmten Situationen kann es je nach Größe des Arbeitsspeichers vorkommen, dass nicht alle diese Daten im RAM Platz finden, etwa weil besonders speicherintensive Programme verwendet werden. In diesem Fall wird der adressierbare Systemspeicher erweitert und dieser zusätzliche Adressraum in eine Auslagerungsdatei umgeleitet.
Einige Programme oder Betriebssysteme wie etwa Windows greifen aber auch dann auf die Auslagerungsdatei zu, wenn noch ausreichend RAM vorhanden ist. So wird unter bestimmten Versionen von Windows beispielsweise der einem Programm zugewiesene Arbeitsspeicher in die Auslagerungsdatei umgeleitet, wenn es vom Benutzer minimiert wird. Dadurch wird mehr Arbeitsspeicher für die momentan aktiven Programme verfügbar.
Der Zugriff auf den zusätzlichen Speicher der Auslagerungsdatei ist aus technischen Gründen wesentlich langsamer als der direkte Zugriff auf den RAM. Daher kommt es je nach Geschwindigkeit des verwendeten Massenspeichermediums zu Geschwindigkeitseinbußen, wenn größere Datenmengen aus der Auslagerungsdatei gelesen beziehungsweise in die Auslagerungsdatei geschrieben werden. Je höher die Übertragungsrate und vor allem je niedriger die Zugriffszeit des Massenspeichermediums ist, desto geringer sind die zu erwartenden Geschwindigkeitseinbußen.
Je nachdem, ob die Speicherverwaltung reine Segmentierung, reines Paging im Rahmen einer virtuellen Speicherverwaltung oder eine Kombination aus beidem anwendet, enthält die Auslagerungsdatei Segmente, Speicherseiten oder beides. Der Arbeitsspeicher, die Auslagerungsdatei und eventuell gemappte Sekundärspeicherseiten (Paging) bilden zusammen den belegten Teil des virtuellen Speichers.
Der Begriff Auslagerungsdatei ist hauptsächlich durch das Betriebssystem Windows geprägt. Dieses verwaltet die Auslagerungsdatei selbstständig und passt sie dynamisch den Anforderungen an. Wird für die Ausführung eines Prozesses mehr Speicherplatz benötigt, wird die Auslagerungsdatei größer; wird später wieder weniger Speicherplatz gebraucht, wird sie verkleinert. Die minimale und maximale Größe der Auslagerungsdatei kann weitestgehend frei gewählt werden. Auf Computern mit mehreren internen Festplatten ist es möglich, die Auslagerungsdatei auf eine beliebige Festplatte (vorzugsweise schnelle SSDs) zu verschieben oder auch auf mehrere Festplatten zu verteilen.[2][3] Eine Unterscheidung zwischen dem physischen Arbeitsspeicher und der Auslagerungsdatei findet aus Sicht der Anwendungen nicht statt. Die Anwendungen verwenden den virtuellen Speicher vollkommen transparent. Unter Betriebssystemen der Windows-NT-Familie heißt die Auslagerungsdatei standardmäßig pagefile.sys.[3] Es ist auch möglich, die Auslagerungsdatei zu deaktivieren, was jedoch nur sinnvoll ist, wenn der physische Speicher nie vollständig aufgebraucht wird und seine Nutzung auch nicht durch Lizenzmodelle eingeschränkt wird (z. B. MS SQL Server Express).
ReadyBoost ist eine von Microsoft unter Windows Vista eingeführte Technologie, die es erlaubt, auf einem schnellen Flash-Speicher (z. B. einem USB-Stick) Dateien (damit unter anderem die Auslagerungsdatei) zwischenzuspeichern und dadurch den Zugriff zu beschleunigen.
Andere Betriebssysteme, wie z. B. Linux, verwenden ähnliche Speicherverwaltungsmechanismen, jedoch anstelle der Auslagerungsdatei meist eine dafür zugewiesene (oder dedizierte) Partition, der Auslagerungsbereich (englisch swap partition oder swap space). Dieser Bereich kann auch auf einem eigenen Massenspeicher liegen. Die Verwendung einer Partition statt einer Auslagerungsdatei hat den Vorteil, dass die dadurch zu erwartende Fragmentierung in dem Dateisystem, auf dem die Auslagerungsdatei angelegt würde, vermieden werden kann sowie umgekehrt dass eine bei Anlegen des Bereichs bereits bestehende Fragmentierung der übrigen Daten sich nicht auf die Auslagerung auswirkt. Nachteilig kann die feste Größe der Partition und somit auch des verfügbaren Speichers sein. Unter Linux ist es möglich, während des Betriebs weitere Auslagerungspartitionen hinzuzufügen beziehungsweise vorhandene zu entfernen. Außerdem können auch reguläre Dateien zum Auslagern genutzt werden, aber auch hier ist die Dateigröße fest.[4][5] Der Auslagerungsspeicher kann auch als Zwischenspeicher während des Ruhezustandes verwendet werden.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.