Virtueller Arbeitsspeicher (Virtual Memory)
Was ist virtueller Arbeitsspeicher (Virtual Memory)
Virtueller Arbeitsspeicher, auch als Virtual Memory bekannt, ist eine Speichermanagementmethode, bei der Sekundärspeicher wie ein Teil des Hauptspeichers genutzt und verwaltet wird. Diese Technik wird häufig im Betriebssystem eines Computers verwendet.
Ein Virtual Memory kombiniert Hardware und Software, um einem Computer zu ermöglichen, Engpässe im physischen Speicher zu verhindern, indem es Daten vorübergehend vom RAM auf die Festplatte transferiert.
Heutzutage sind die meisten PCs mit mindestens 8 GB RAM ausgestattet. Trotzdem kann dieses Memory manchmal nicht ausreichen, um mehrere Programme gleichzeitig auszuführen. Hier kommt der virtuelle Arbeitsspeicher zum Einsatz. Er entlastet den RAM, indem er Daten, die kürzlich nicht verwendet wurden, auf ein anderes Speichermedium wie eine Festplatte oder ein Solid-State-Laufwerk (SSD) verschiebt.
Virtueller Arbeitsspeicher ist entscheidend für die Optimierung der Systemleistung, das Multitasking und die Nutzung großer Programme. Dennoch sollten Anwender sich nicht zu sehr auf ihn verlassen, da er deutlich langsamer als RAM ist. Wenn das Betriebssystem zu oft zwischen virtuellem Arbeitsspeicher und RAM hin- und herschalten muss, wird der Computer langsamer. Dieser Zustand wird als Thrashing bezeichnet.
Virtual Memory wurde entwickelt, als physischer Arbeitsspeicher, auch RAM genannt, kostspielig war. Da Computer nur eine begrenzte Menge an RAM haben, ist dieses Memory schnell erschöpft, wenn mehrere Programme gleichzeitig laufen. Mit virtuellem Arbeitsspeicher kann ein System einen Teil der Festplatte nutzen, um RAM zu emulieren. Dadurch können größere oder mehrere Programme gleichzeitig ausgeführt werden, als hätte das System mehr physisches Memory, ohne dass in zusätzlichen RAM investiert werden muss.
Die Funktionsweise von virtuellem 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.
Unterschiedliche Typen von Virtual Memory
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.
Das Management virtuellen Arbeitsspeichers
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.
Die Vorteile von Virtual 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.
Einschränkungen des virtuellen Arbeitsspeichers
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.
Virtual Memory (Virtual RAM) und physisches Memory (RAM) im Vergleich
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.
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.
Eine kurze Historie des Virtual Memory
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.