Blick aus der Vogelperspektive auf Computerprogrammierer, die an einem Schreibtisch sitzen und einen Desktop-PC verwenden

Was ist virtueller Speicher?

Virtueller Speicher, definiert

Virtueller Speicher, eine Speichermanagementtechnik, ermöglicht es einem überlasteten Betriebssystem (Operating System, OS), eine synthetische Form von Speicher zu erzeugen, die es ihm erlaubt, über seine Speichergrenzen hinaus zu arbeiten.

Im Wesentlichen ermöglicht virtueller Speicher dem Betriebssystem, den Arbeitsspeicher (Random Access Memory, RAM) für die Festplattennutzung umzufunktionieren, wenn zu viele Computerprogramme den Speicher aufgebraucht haben.

Eine kurze Analogie aus der Finanzwelt beschreibt die Situation treffend: Denken Sie an den physischen Speicher Ihres Computers als das Geld auf Ihrem persönlichen Girokonto. Alles läuft gut und einwandfrei, bis das Geld aufgebraucht ist. Wenn Sie an diesem Punkt angekommen sind, bietet Ihre Bank (die einen Überziehungsschutz für Girokonten anbietet) Ihnen einen Überziehungskredit (virtuellen Speicher) an, der vorübergehend die Kontoausgaben deckt. 

Ein solcher Überziehungskredit hat offensichtliche Grenzen. Erstens steuert eine Finanzobergrenze die Höhe der Ausgaben, die die Bank übernimmt. Außerdem regelt eine Frist, wie lange Ihr Finanzinstitut die Situation ohne einen Zufluss von Kapital auf Ihrem Konto so weiterlaufen lässt.

Virtueller Speicher ist ein wesentlicher Bestandteil von Computersystemen und ermöglicht einen reibungsloseren allgemeinen Betrieb, aber es ist wichtig zu beachten, dass es sich nicht um eine nachhaltige, dauerhafte Lösung handelt. Er soll als Speiche-Notreserve dienen. Eher eine schnelle Lösung, die irgendwie die Aufgabe erledigt, aber nur für den Moment. 

Virtueller Speicher ist eine moderne Erfindung der Computertechnik. Im Kern aktualisiert er einfach das alte Konzept frei nach dem Ausspruch „Von Petrus ausleihen, um Paulus zu bezahlen“, bei dem Ressourcen von einer Quelle zur anderen verlagert werden.

Wie virtueller Speicher funktioniert

Eine zentrale Recheneinheit (Central Processing Unit, CPU) ist die primäre funktionale Komponente eines Computers und verwendet verschiedene Speicherformen. RAM ist eine schnellere und leichter zugängliche Form der Speichernutzung, aber nicht unbegrenzt groß. Die Festplatte der CPU bietet hingegen viel Speicherplatz, allerdings ist der Zugriff langsamer.

Der eigentliche Speicher ist auf der CPU installiert. Realer Speicher bezeichnet die RAM-Hardware, bei der Daten vorübergehend für sofortige und aktive Nutzung gespeichert werden. (Programmierer bezeichnen den realen Speicher auch als physischen Speicher oder Hauptspeicher.) Im Gegensatz dazu gilt der sekundäre Speicher als nichtflüchtig, was bedeutet, dass solche Speichergeräte auch dann weiter ihre Funktion erfüllen, wenn die Maschine ausgeschaltet und von der Stromquelle getrennt ist. Dies und einige andere Leistungsvariablen unterscheidet ihn vom Arbeitsspeicher (RAM). 

Wenn man die beiden Typen als Automobile darstellen würde, wäre der RAM ein auffälliger kleiner Sportwagen: schnell, kostspielig und mit kaum genug Platz für Fahrer und Beifahrer (geringe Kapazität). Der Sekundärspeicher ist langsamer und günstiger, vergleichbar mit einem sparsamen Minivan, bietet aber deutlich mehr Kapazität als der Primärspeicher.

Die Festplatte, auch Hard Disk Drive (HDD) genannt, fungiert als kombiniertes Speichermedium und Wiedergabegerät, wobei die Festplatte selbst die physische Platte innerhalb der Festplatte ist, auf der magnetische Daten kodiert werden.

In den meisten Fällen wurde die HDD-Nutzung durch Solid-State Drives (SSD) ersetzt. Die SSD erfüllt die gleichen Funktionen, verwendet jedoch Flash-Speicher in Form von nichtflüchtigen Speicherchips, die keine beweglichen Teile benötigen. SSDs schneiden im Vergleich zu HDDs aufgrund ihrer robusten Geschwindigkeit, ihres schlankeren physischen Profils und ihres geringeren Stromverbrauchs gut ab.

Virtueller Speicher funktioniert durch temporäres Umwandeln von RAM, der zuvor verwendet wurde, aber seitdem inaktiv und für einige Zeit ungenutzt geblieben ist. Das Betriebssystem extrahiert die Daten aus diesem kaum genutzten RAM und legt sie in eine Swap-Datei (oder Auslagerungsdatei) auf der Festplatte.

Das Betriebssystem nimmt den neu bereinigten Arbeitsspeicher dann sofort in Betrieb. Der aus diesem Arbeitsspeicher „geliehene“ zusätzliche Speicher hilft dabei, die verschiedenen Programme des Computerbenutzers ohne Störungen der Systemleistung oder wahrgenommene Verlangsamungen der Betriebsgeschwindigkeit auszuführen.

IBM Power

Modernisierung und Automatisierung mit IBM Power

Joe Cropper, IBM Master Inventor, STSM, IBM Power Hybrid-Cloud-Plattform, führt Sie durch eine Demo, wie IBM Power Ihnen bei der Modernisierung Ihrer Anwendungen helfen kann.

Was ist Seitenlogik?

In Bezug auf Daten dienen Seiten als Währung und fungieren als grundlegendes Tauschmittel. Im Bereich des virtuellen Speichermanagements sind die Module, die es enthält, Seiten, die kleinste Dateneinheit. Seiten sind zusammenhängende (angrenzende) Blöcke des virtuellen Adresseraums

Seiten haben in der Regel eine feste Größe. Ursprünglich hatten Seiten einheitlich eine Größe von 4 KB und diese Größe war bisher der Branchenstandard. In letzter Zeit verwenden modernere Systeme deutlich größere feste Speicherkapazitäten, darunter Größen bis zu 2 MB oder 1 GB oder sogar noch mehr. 

Im virtuellen Speicher sind die meisten Seiten entweder 4 KB oder 8 KB groß, je nach verwendeter Architektur. Microsoft Windows, Linux und das macOS von Apple sind alle um eine Seitengröße von 4 KB herum aufgebaut. Die Seitengröße der virtuellen Speicherseite von UNIX ist entsprechend der jeweiligen Hardwarearchitektur jedes Systems strukturiert, entweder als 32-Bit- oder 64-Bit-System. (UNIX-Systeme reservieren üblicherweise 3 bis 4 GB für jeden ausgeführten Prozess.)

Innerhalb eines bestimmten Betriebssystems entsprechen alle Seiten in der Regel einer Seitengröße. Die Ausnahme von dieser Regel ist die dynamische Partitionierung, die Speicher in verschiedenen Größen je nach besonderem Bedarf bereitstellt. Wenn Seiten die gleiche Größe haben, ist es für ein Betriebssystem einfacher, alle Seiten gleichzeitig erfolgreich zu verwalten.

Außerdem ist es durch die gleiche Größe für das Betriebssystem einfacher, einer externen Fragmentierung vorzubeugen. Diese tritt auf, wenn zwischen zugewiesenen Speicherblöcken ungenutzter Speicher übrigbleibt. Das Ergebnis ist zu wenig verfügbarer Speicher, um ihn in einem einzelnen, nützlichen Block zuzuweisen. 

Durch die Verwendung von Seiten kann ein Betriebssystem den logischen Speicher eines Prozesses kartieren und ihn im Grunde in Form von Seitenrahmen in nicht zusammenhängenden physischen Speicher übersetzen. Seitenrahmen sind Blöcke des physischen Speichers (RAM), die ein Betriebssystem als eine Art Container für Speicherseiten verwendet. Die Größe des Seitenrahmens entspricht der Größe der Seite selbst, sei es 4 KB oder mehr. 

Eine CPU erstellt virtuelle Speicheradresse, die als Speicherstandortreferenz dient, die von den Softwareprozessen auf diesem Betriebssystem verwendet wird. Programmierer nutzen Seitentabellen, um Seitenrahmen zu verfolgen und zu verwalten und als primäre Datenstruktur zu dienen. Ein Seitentabelleneintrag dient dazu, eine virtuelle Adresse mit einer physischen Adresse innerhalb des Betriebssystems zu verknüpfen. 

Eine virtuelle Seitennummer (Virtual Page Number, VPN) verwendet die ersten 20 Bits einer virtuellen Adresse als Kennung für den virtuellen Adressraum innerhalb des virtuellen Speicherbereichs dieses Computerprozesses. Die Seitennummer identifiziert die Seite, sodass die Speicherverwaltungseinheit (Memory Management Unit, MMU) sie aus einem physischen Speicherrahmen oder von der Festplatte abrufen kann.

In der Zwischenzeit dient der verbleibende Teil der Adresse als Seitenversatz, der die genaue physische Position dieser Seite innerhalb des Betriebssystems angibt, bis hin zu den Positionen der einzelnen Bytes.

Thrashing und Seitenfehler verstehen

In einer perfekten Welt würde der RAM eines Computers ausreichen, um Programme auszuführen. Moderne Rechner eignen sich jedoch hervorragend für Multitasking und den gleichzeitigen Betrieb mehrerer Programme, was den Speicherzuweisungsprozess leicht erschweren kann. Diese erhöhte Nachfrage führt regelmäßig zu einer übermäßigen Beanspruchung des verfügbaren Speichers des Betriebssystems. 

Wenn der verfügbare Festplattenspeicher vollständig erschöpft ist, springt der virtuelle Speicher ein, um den Betrieb Ihrer Programme aufrechtzuerhalten. Diese Betriebserweiterung geht jedoch in der Regel zu Lasten der Betriebsgeschwindigkeit. Der virtuelle Speicher arbeitet langsamer als der physische Arbeitsspeicher (da der Zugriff auf Speichermedien länger dauert). Je mehr virtuellen Speicher ein Betriebssystem verbraucht, desto wahrscheinlicher ist es also, dass der Benutzer einen Leistungsabfall erlebt. 

Diese Form der Leistungsverlangsamung wird als „Thrashing“ bezeichnet. Der Begriff „Thrashing“ wird auch verwendet, um einen anhaltenden und dysfunktionalen Betriebszustand zu bezeichnen, in dem ein Betriebssystem den größten Teil seiner Verarbeitungskapazität dafür aufwendet, Daten in den Speicher hinein und wieder heraus zu verschieben, anstatt Code auszuführen.

Ein weiteres Phänomen, das regelmäßig auftritt, ist der sogenannte „Seitenfehler“. Seitenfehler treten auf, wenn ein funktionierendes Programm versucht, auf eine Datenseite zuzugreifen, die zu diesem Zeitpunkt nicht im physischen Arbeitsspeicher (RAM) abgebildet ist.

Dies führt zu einer Hardware-Unterbrechung, während der sogenannte Page Fault Handler im OS-Kernel aktiviert wird. Der OS-Kernel greift auf die benötigten Daten von einem sekundären Speichermedium zu. Anschließend aktualisiert das Betriebssystem die Seitentabelle, die alle virtuellen Adressen und ihre entsprechenden physischen Adressen verfolgt, bevor es zum normalen Programmbetrieb zurückkehrt. 

Es existieren mehrere Arten von Seitenfehlern, die jeweils nach ihrer wahrgenommenen Schwere klassifiziert werden:

  • Geringfügiger Seitenfehler: Geringfügige (oder „weiche“) Seitenfehler bezeichnen eine Situation, in der eine bestimmte Seite im physischen Speicher auffindbar ist, aber noch nicht in der Seitentabelle oder im gemeinsamen Speicher dieses Prozesses abgebildet wurde.
  • Schwerwiegender Seitenfehler: Ein Seitenfehler wird schwerwiegend, wenn sich eine gewünschte Seite überhaupt nicht im Arbeitsspeicher befindet, was bedeutet, dass die Seite von der Festplatte geladen werden muss, was bedeutet, dass der daraus resultierende Ladevorgang länger dauert.
  • Ungültige Seitenfehler: Der schwerwiegendste Seitenfehler versucht, Verschiebungen zu blockieren, die auf illegalen Speicher zugreifen wollen. Die daraus resultierende Aktion – ein Segmentierungsfehler – führt in der Regel dazu, dass das Programm nicht mehr arbeitet.

Demand Paging-Methoden

Eine Möglichkeit, wie ein Betriebssystem die Verarbeitung optimiert, ist durch Demand Paging. Bei dieser Technik wird auf das Vorladen eines gesamten Programms verzichtet; stattdessen lädt das Betriebssystem nur die Seiten, die zu einem bestimmten Zeitpunkt benötigt werden.

Der Vorteil ist, dass das System auf diese Weise mehr Programme ausführen kann. Der Nachteil kann eine Häufung von Seitenfehlern bedeuten (die möglicherweise zu Thrashing führen), die durch das ständige Unterbrechen des Programmablaufs zum Abrufen von Seiten aus dem Speicher verursacht werden.

Verschiedene algorithmenbasierte Methoden werden in Verbindung mit Demand Paging eingesetzt. Jeder dieser Algorithmen zum Ersetzen von Seiten behandelt das Problem mit einem eigenen Spin: 

  • Einige Systeme verwenden den Ansatz Least Recently Used (LRU). Dieser Cache-Räumungsalgorithmus könnte als „use it or lose it“ – etwa: jetzt nutzen oder aufgeben –beschrieben werden. LRU hilft bei der Optimierung der Speichernutzung, indem es die Caches basierend auf der Dauer der ungenutzten Elemente bereinigt. Wenn der Cache seine maximale Kapazität erreicht, wird das Element, das sich am längsten im Cache befunden hat, ohne dass darauf zugegriffen wurde, aus diesem Cache gelöscht. 
  • Das Prinzip „First-in first-out“ (FIFO) bezieht sich auf die älteste Seite, die in der Reihenfolge ihres Eingangs zuerst geladen wurde. Wenn der Cache voll ist, wird diese Seite als erste gelöscht.
  • „Second Chance“ überprüft das FIFO-Verfahren noch einmal, indem es erneut prüft, um sicherzustellen, dass die Seite, die gerade freigegeben werden soll, in letzter Zeit wirklich nicht genutzt wurde.
  • Wie das Wort andeutet, bezeichnet „Optimal“ eine bestmögliche Situation, in der ein (sehr guter) Algorithmus extrapoliert, welche Seite am wenigsten wahrscheinlich in Zukunft verwendet wird, und diese für die spätere Eliminierung markiert. Da „Optimal“ eine sehr komplizierte Prognose erfordert, gilt es oft als am nützlichsten für theoretische Diskussionen und Planungszwecke und nicht für die tatsächliche Umsetzung.
Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Verwandte Lösungen
IBM Storage Fusion

Schalten Sie schnellere und widerstandsfähigere Abläufe frei, indem Sie Speicher, Schutz und Orchestrierung für KI-, VM- und Container-Workloads vereinheitlichen.

Erkunden Sie IBM Storage Fusion
IBM Virtualisierungslösungen

Optimieren und skalieren Sie Workloads in virtuellen und physischen Umgebungen mit effizienter, flexibler Virtualisierung.

Virtualisierungslösungen von IBM erkunden
IBM Infrastructure Services

Umfassendes technisches Fachwissen für Ihre IBM Systems-Server und -Speicher.

Infrastrukturservices von IBM entdecken
Machen Sie den nächsten Schritt

Optimieren Sie Ihre Infrastruktur mit einheitlichen Datendiensten und Virtualisierung, um elastische, leistungsstarke Workloads in hybriden Umgebungen zu ermöglichen.

  1. IBM Storage Fusion entdecken
  2. Virtualisierungslösungen von IBM erkunden