Definition

Virtueller Arbeitsspeicher (Virtual Memory)

Virtueller Arbeitsspeicher, auch Virtual Memory genannt, ist eine Speicherverwaltungstechnik, bei der der Sekundärspeicher so genutzt werden kann, als wäre er Teil des Hauptspeichers. Virtuelles Memory ist eine gängige Technik, die im Betriebssystem eines Computers verwendet wird.

Der virtuelle Arbeitsspeicher nutzt sowohl Hardware als auch Software, um einen Computer in die Lage zu versetzen, Engpässe im physischen Speicher auszugleichen, indem er Daten vorübergehend vom Arbeitsspeicher (RAM) auf die Festplatte überträgt.

Die meisten PCs sind heute mit mindestens 8 GB (Gigabyte) RAM ausgestattet. Manchmal reicht dies jedoch nicht aus, um mehrere Programme gleichzeitig auszuführen. An dieser Stelle kommt der virtuelle Arbeitsspeicher ins Spiel. Virtuelles Memory gibt Arbeitsspeicher frei, indem er Daten, die in letzter Zeit nicht verwendet wurden, auf ein Speichergerät auslagert, zum Beispiel auf eine Festplatte oder ein Solid-State-Laufwerk (SSD).

Virtueller Arbeitsspeicher ist wichtig für die Verbesserung der Systemleistung, Multitasking und die Verwendung großer Programme. Allerdings sollte man sich nicht zu sehr auf das virtuelle Memory verlassen, da er wesentlich langsamer ist als RAM. Wenn das Betriebssystem zu oft Daten zwischen dem virtuellen Memory und dem Arbeitsspeicher austauschen muss, wird der Computer langsamer - dies wird als Thrashing bezeichnet.

Virtueller Arbeitsspeicher wurde zu einer Zeit entwickelt, als physischer Arbeitsspeicher - auch als RAM bezeichnet - teuer war. Computer verfügen über eine begrenzte Menge an RAM, so dass dieser Speicher irgendwann erschöpft ist, wenn mehrere Programme gleichzeitig laufen. Ein System, das virtuellen Arbeitsspeicher verwendet, nutzt einen Teil der Festplatte, um RAM zu emulieren. Mit virtuellem Arbeitsspeicher kann ein System größere oder mehrere gleichzeitig laufende Programme laden, so dass jedes Programm so arbeiten kann, als hätte es mehr Speicherplatz, ohne dass mehr RAM gekauft werden muss.

Wie funktioniert virtueller Arbeitsspeicher?

Der virtuelle Arbeitsspeicher arbeitet sowohl mit Hardware als auch mit Software. Wenn eine Anwendung in Betrieb ist, werden die Daten dieses Programms an einer physischen Adresse im RAM gespeichert. Eine Memory Management Unit (MMU) ordnet die Adresse dem RAM zu und übersetzt die Adressen automatisch. Die MMU kann zum Beispiel einen logischen Adressraum einer entsprechenden physischen Adresse zuordnen.

Wird der RAM-Speicher irgendwann für etwas Dringenderes benötigt, können die Daten aus dem RAM in den virtuellen Arbeitsspeicher ausgelagert werden. Der Memory-Manager des Computers ist dafür zuständig, die Verschiebungen zwischen physischem und virtuellem Speicher zu überwachen. Wenn die Daten wieder benötigt werden, setzt die MMU des Computers die Ausführung mit einem Kontextwechsel fort.

Beim Kopieren des virtuellen Arbeitsspeichers in den physischen Speicher teilt das Betriebssystem den Speicher mit einer festen Anzahl von Adressen entweder in Page Files oder in Swap Files auf. Jede Page wird auf einer Festplatte gespeichert, und wenn die Seite benötigt wird, kopiert das Betriebssystem sie von der Festplatte in den Hauptspeicher und wandelt die virtuellen Adressen in reale Adressen um.

Der Prozess der Auslagerung von virtuellem in physischen Arbeitsspeicher ist jedoch recht langsam. Das bedeutet, dass die Verwendung von virtuellem Memory im Allgemeinen zu einer spürbaren Leistungsminderung führt. Wegen der Auslagerung gilt ein Computer mit mehr Arbeitsspeicher als leistungsfähiger.

Arten von virtuellem Arbeitsspeicher

Die MMU eines Computers verwaltet die Vorgänge im virtuellen Arbeitsspeicher. In den meisten Computern ist die MMU-Hardware in die CPU integriert. Die CPU erzeugt auch den virtuellen Adressraum. Im Allgemeinen wird der virtuelle Arbeitsspeicher entweder ausgelagert oder segmentiert.

Beim Paging wird das Memory in Abschnitte oder Paging-Dateien unterteilt. Wenn der verfügbare Arbeitsspeicher eines Computers aufgebraucht ist, werden die nicht verwendeten Seiten mithilfe eines Swap File auf die Festplatte übertragen. Ein Swap File ist ein auf der Festplatte reservierter Speicherplatz, der als virtuelle Speichererweiterung für den Arbeitsspeicher des Computers verwendet wird. Wenn das Swap File benötigt wird, wird es mit Hilfe eines Prozesses, der als Page Swapping bezeichnet wird, in den Arbeitsspeicher zurückgeschickt. Dieses System stellt sicher, dass dem Betriebssystem und den Anwendungen des Computers nicht der reale Speicher ausgeht. Die maximale Größe des Page File kann das Anderthalb- bis Vierfache des physischen Arbeitsspeichers des Computers betragen.

Der Prozess des Virtual-Memory-Pagings verwendet Page-Tabellen, die die virtuellen Adressen, die das Betriebssystem und die Anwendungen verwenden, in die physischen Adressen übersetzen, die die MMU verwendet. Einträge in dieser Tabelle zeigen an, ob sich die Seite im RAM befindet. Wenn das Betriebssystem oder ein Programm die benötigte Seite nicht im RAM findet, reagiert die MMU auf die fehlende Speicherreferenz mit einem Page Fault, um das Betriebssystem dazu zu bringen, die Page zurück in den Arbeitsspeicher zu verschieben, wenn sie benötigt wird. Sobald sich die Seite im RAM befindet, erscheint ihre virtuelle Adresse in der Page-Tabelle.

Die Segmentierung wird ebenfalls zur Verwaltung des virtuellen Memory verwendet. Bei diesem Ansatz wird der virtuelle Arbeitsspeicher in Segmente unterschiedlicher Länge unterteilt. Segmente, die im Memory nicht verwendet werden, können in den virtuellen Arbeitsspeicherbereich auf der Festplatte verschoben werden. Segmentierte Informationen oder Prozesse werden in einer Segmenttabelle verfolgt, aus der hervorgeht, ob ein Segment im Memory vorhanden ist, ob es geändert wurde und wie seine physische Adresse lautet. Darüber hinaus bestehen Dateisysteme bei der Segmentierung nur aus Segmenten, die in den potenziellen Adressraum eines Prozesses eingeordnet werden.

Segmentierung und Paging unterscheiden sich als Speichermodell darin, wie der Arbeitsspeicher aufgeteilt wird; die Prozesse können jedoch auch kombiniert werden. In diesem Fall wird der Arbeitsspeicher in Frames oder Pages unterteilt. Die Segmente nehmen mehrere Seiten ein, und die virtuelle Adresse enthält sowohl die Segmentnummer als auch die Seitennummer.

Andere Seitenersetzungsmethoden sind das FIFO-Verfahren (First In First Out), der optimale Algorithmus und die LRU Page Replacement (Least Recently Used). Bei der FIFO-Methode wählt der Arbeitsspeicher den Ersatz für die Seite aus, die sich am längsten in der virtuellen Adresse befindet. Bei der Methode des optimalen Algorithmus werden die Page Replacements (Seitenersetzungen) danach ausgewählt, welche Seite nach der längsten Zeit wahrscheinlich nicht mehr ersetzt wird. Bei der LRU-Seitenersetzungsmethode wird die Seite im Hauptspeicher ersetzt, die am längsten nicht mehr verwendet wurde.

Wie man virtuellen Arbeitsspeicher verwaltet

Die Verwaltung des virtuellen Arbeitsspeichers innerhalb eines Betriebssystems kann einfach sein, da es Standardeinstellungen gibt, die den für den virtuellen Speicher zuzuweisenden Festplattenspeicherplatz festlegen. Diese Einstellungen funktionieren für die meisten Anwendungen und Prozesse, aber es kann vorkommen, dass es notwendig ist, die Menge an Festplattenspeicher, die dem virtuellen Arbeitsspeicher zugewiesen wird, manuell zurückzusetzen - zum Beispiel bei Anwendungen, die auf schnelle Reaktionszeiten angewiesen sind, oder wenn der Computer über mehrere Festplattenlaufwerke verfügt.

Beim manuellen Zurücksetzen des virtuellen Memory muss der minimale und maximale Festplattenspeicherplatz für den virtuellen Speicher angegeben werden. Wenn zu wenig Festplattenspeicher für den virtuellen Arbeitsspeicher zugewiesen wird, kann dies dazu führen, dass dem Computer der Arbeitsspeicher ausgeht. Wenn ein System ständig mehr virtuellen Speicherplatz benötigt, kann es ratsam sein, den Arbeitsspeicher zu erweitern. Gängige Betriebssysteme empfehlen im Allgemeinen, den virtuellen Speicher nicht über das Anderthalbfache des RAM hinaus zu vergrößern.

Die Verwaltung des virtuellen Arbeitsspeichers ist von Betriebssystem zu Betriebssystem unterschiedlich. Aus diesem Grund sollten IT-Fachleute die Grundlagen für die Verwaltung von physischem Memory, virtuellem Memory und virtuellen Adressen kennen.

RAM-Zellen in SSDs haben ebenfalls eine begrenzte Lebensdauer. RAM-Zellen haben eine begrenzte Anzahl von Schreibvorgängen, so dass ihre Verwendung als virtueller Arbeitsspeicher oft die Lebensdauer des Laufwerks verkürzt.

Was sind die Vorteile der Verwendung von virtuellem Memory?

Die Verwendung von virtuellem Arbeitsspeicher hat unter anderem folgende Vorteile:

  • Er kann doppelt so viele Adressen verarbeiten wie der Hauptspeicher.
  • Er ermöglicht die gleichzeitige Nutzung von mehr Anwendungen.
  • Er befreit Anwendungen von der Verwaltung des gemeinsamen Speichers und erspart dem Benutzer das Hinzufügen von Speichermodulen, wenn der RAM-Speicherplatz knapp wird.
  • Er erhöht die Geschwindigkeit, wenn nur ein Segment eines Programms zur Ausführung benötigt wird.
  • Die Sicherheit wird durch die Memory-Isolierung erhöht.
  • Es ermöglicht die gleichzeitige Ausführung mehrerer größerer Anwendungen.
  • Die Zuweisung von Arbeitsspeicher ist relativ kostengünstig.
  • Es ist keine externe Fragmentierung erforderlich.
  • Die CPU-Nutzung ist effektiv für die Verwaltung logischer Partitions-Workloads.
  • Daten können automatisch verschoben werden.
  • Pages im ursprünglichen Prozess können während eines Fork-Systemaufrufs, der eine Kopie von sich selbst erstellt, gemeinsam genutzt werden.

Zusätzlich zu diesen Vorteilen können Administratoren in einer virtualisierten Computerumgebung Techniken zur Verwaltung des virtuellen Arbeitsspeichers verwenden, um einer virtuellen Maschine (VM), deren Ressourcen erschöpft sind, zusätzlichen Speicher zuzuweisen. Solche Virtualisierungsmanagement-Taktiken können die VM-Leistung und die Verwaltungsflexibilität verbessern.

Abbildung 1: Dies ist ein Beispiel dafür, wie physisches Memory vom Virtual Memory Manager geteilt wird.
Abbildung 1: Dies ist ein Beispiel dafür, wie physisches Memory vom Virtual Memory Manager geteilt wird.

Wo stößt virtuellem Arbeitsspeicher an seine Grenzen?

Die Verwendung von virtuellem Speicher hat zwar ihre Vorteile, bringt aber auch einige Nachteile mit sich, die es zu berücksichtigen gilt, zum Beispiel:

  • Anwendungen laufen langsamer, wenn sie aus dem virtuellen Arbeitsspeicher ausgeführt werden.
  • Daten müssen zwischen virtuellem und physischem Arbeitsspeicher gemappt werden, was zusätzliche Hardwareunterstützung für Adressübersetzungen erfordert, was den Computer weiter verlangsamt.
  • Die Größe des virtuellen Memory ist durch die Menge des sekundären Speichers sowie durch das Adressierungsschema des Computersystems begrenzt.
  • Wenn nicht genügend RAM vorhanden ist, kann es zu einem „Thrashing“ kommen, wodurch der Computer langsamer arbeitet.
  • Das Umschalten zwischen Anwendungen, die virtuellen Arbeitsspeicher verwenden, kann einige Zeit in Anspruch nehmen.
  • Der verfügbare Speicherplatz auf der Festplatte wird verringert.

Virtuelles Memory (virtueller RAM) vs. physisches Memory (RAM)

Wenn es um die Unterschiede zwischen virtuellem und physischem Arbeitsspeicher geht, ist der größte Unterschied in der Regel die Geschwindigkeit. RAM ist wesentlich schneller als virtueller Arbeitsspeicher. RAM ist jedoch in der Regel teurer.

Wenn ein Computer Speicherplatz benötigt, wird zuerst RAM verwendet. Das virtuelle Memory, der langsamer ist, wird erst verwendet, wenn der RAM-Speicher voll ist.

Abbildung 2: Die Unterschiede zwischen virtuellem und physischem Memory.
Abbildung 2: Die Unterschiede zwischen virtuellem und physischem Memory.

Benutzer können den Arbeitsspeicher eines Computers aktiv erweitern, indem sie mehr RAM-Chips kaufen und installieren. Dies ist nützlich, wenn es zu Verlangsamungen kommt, weil zu viele Memory Swaps erfolgen. Die Größe des Arbeitsspeichers hängt davon ab, was auf einem Computer installiert ist. Der virtuelle Arbeitsspeicher hingegen ist durch die Größe der Festplatte des Computers begrenzt. Die Einstellungen für virtuelles Memory können oft über das Betriebssystem gesteuert werden.

Darüber hinaus nutzt RAM Swapping-Techniken, während virtueller Arbeitsspeicher Paging verwendet. Während der physische Speicher durch die Größe des RAM-Chips begrenzt ist, ist der virtuelle Arbeitsspeicher durch die Größe der Festplatte begrenzt. Außerdem hat RAM direkten Zugriff auf die CPU, während virtueller RAM keinen Zugriff hat.

Die Geschichte des virtuellen Arbeitsspeichers

Bevor der virtuelle Arbeitsspeicher entwickelt wurde, verfügten Computer über RAM und Sekundärspeicher. Frühe Computer verwendeten Magnetkernspeicher als Hauptspeicher und Magnettrommeln als Sekundärspeicher. In den 1940er und 1950er Jahren war Computerspeicher teuer und in der Regel Mangelware. Als die Computerprogramme immer größer und komplexer wurden, mussten die Entwickler befürchten, dass ihre Programme den gesamten Hauptspeicher des Computers ausnutzen würden und ihnen das Memory ausging.

In jenen frühen Tagen nutzten die Programmierer ein Verfahren namens Overlaying, um Programme auszuführen, die größer als der verfügbare Arbeitsspeicher waren. Teile eines Programms, die nicht ständig gebraucht wurden, wurden als Overlays angelegt, die bei Bedarf das vorhandene Overlay im Memory überschrieben. Damit das Overlaying funktionierte, war eine umfangreiche Programmierung erforderlich, und das war ein wichtiger Anstoß für die Entwicklung des automatischen virtuellen Arbeitsspeichers.

Dem deutschen Physiker Fritz-Rudolf Güntsch wird die Entwicklung des Konzepts des virtuellen Memory im Jahr 1956 zugeschrieben - allerdings ist dieser Punkt umstritten. Güntsch beschrieb jedoch eine Form des Cache-Speichers.

Das erste offensichtliche Beispiel für ein virtuelles Memory-System stammt von der University of Manchester in Manchester, England, die versuchte, ein einstufiges Speichersystem für den Atlas-Computer zu entwickeln. Das System nutzte das Paging-Verfahren, um einem Programmierer virtuelle Adressen im Primärspeicher zuzuweisen. Atlas wurde 1959 entwickelt und später 1962 in Betrieb genommen.

1961 wurde der erste kommerzielle Computer mit virtuellem Arbeitsspeicher von der Burroughs Corp. auf den Markt gebracht. Diese Version des virtuellen Memory nutzte die Segmentierung im Gegensatz zum Paging.

Im Jahr 1969 wiesen IBM-Forscher nach, dass virtuelle Memory-Overlay-Systeme besser funktionierten als die früheren manuellen Systeme. Bis zu diesem Zeitpunkt gab es noch eine Debatte darüber. Mainframes und Minicomputer in den 1970er Jahren verwendeten im Allgemeinen virtuelles Memory. Die Technologie des virtuellen Arbeitsspeichers wurde in den frühen PCs nicht eingesetzt, weil die Entwickler davon ausgingen, dass ein Mangel an Memory auf diesen Maschinen kein Problem darstellen würde. Diese Annahme erwies sich als falsch. Intel führte den virtuellen Arbeitsspeicher 1982 im geschützten Modus des 80286-Prozessors ein und unterstützte die Auslagerungsfunktion, als 1985 der 80386 auf den Markt kam.

Diese Definition wurde zuletzt im September 2022 aktualisiert

Erfahren Sie mehr über Disk-Systeme

ComputerWeekly.de
Close