Virtueller Speicher ist ein Bereich des sekundären Speicherplatzes eines Computersystems (z. B. eine Festplatte oder ein Solid-State-Laufwerk), der sich so verhält, als wäre er Teil des Arbeitsspeichers (RAM) oder des primären Speichers des Systems.
In der Regel werden die Daten, die für die Ausführung von Anwendungen benötigt werden, im RAM gespeichert, wo sie von der CPU schnell abgerufen werden können. Wenn jedoch große Anwendungen ausgeführt werden oder wenn viele Anwendungen gleichzeitig laufen, kann der Arbeitsspeicher des Systems voll werden.
Um dieses Problem zu umgehen, können einige Daten, die im Arbeitsspeicher gespeichert sind und nicht aktiv genutzt werden, vorübergehend in den virtuellen Speicher (der sich physisch auf einer Festplatte oder einem anderen Speichergerät befindet) verschoben werden. Dadurch wird Platz im Arbeitsspeicher frei, der dann für Daten genutzt werden kann, auf die das System unmittelbar zugreifen muss.
Indem Daten zwischen Arbeitsspeicher und virtuellem Speicher ausgetauscht werden, wenn sie nicht benötigt werden, und aus dem virtuellen Speicher zurück in den Arbeitsspeicher, wenn sie benötigt werden, kann ein System mit weit weniger physischem Arbeitsspeicher arbeiten, als es sonst benötigen würde.
Virtueller Speicher ermöglicht es einem System, größere Anwendungen auszuführen oder mehrere Anwendungen gleichzeitig laufen zu lassen, ohne dass der Arbeitsspeicher knapp wird. Das System kann so arbeiten, als ob seine gesamten RAM-Ressourcen der Menge an physischem RAM plus der Menge an virtuellem RAM entsprächen.
- Warum braucht man virtuellen Speicher?
- Virtueller Speicher vs. physischer Speicher
- Wie funktioniert virtueller Speicher?
- Wie man den virtuellen Speicher in einem System erhöht
- Arten des virtuellen Speichers: Paging und Segmentierung
- Paging von virtuellem Speicher
- Virtuelle Speichersegmentierung
- Vor- und Nachteile des virtuellen Speichers
- Vorteile von virtuellem Speicher
- Disadvantages of Virtual Memory
Warum braucht man virtuellen Speicher?
Virtueller Speicher wurde entwickelt, als physischer RAM sehr teuer war, und RAM ist immer noch teurer pro Gigabyte als Speichermedien wie Festplatten und Solid State Drives. Aus diesem Grund ist es wesentlich kostengünstiger, eine Kombination aus physischem RAM und virtuellem Speicher zu verwenden, als ein Computersystem mit mehr RAM auszustatten.
Da die Verwendung von virtuellem Speicher (oder die Vergrößerung des virtuellen Speichers) keine zusätzlichen finanziellen Kosten verursacht (da sie den vorhandenen Speicherplatz nutzt), bietet sie einem Computer die Möglichkeit, mehr Speicher zu verwenden, als physisch auf dem System vorhanden ist.
Ein weiterer wichtiger Grund für die Verwendung von virtuellem Speicher ist, dass alle Computersysteme eine (durch Hardware und Software vorgegebene) Grenze für die Menge an physischem RAM haben, die installiert werden kann. Die Verwendung von virtuellem Speicher ermöglicht es dem System, über diese Grenzen des physischen Arbeitsspeichers hinaus weiterzuarbeiten.
Virtueller Speicher vs. physischer Speicher
Da RAM teurer ist als virtueller Speicher, sollte man meinen, dass Computer – unter gleichen Voraussetzungen – mit so wenig RAM und so viel virtuellem Speicher wie möglich ausgestattet sein sollten.
Aber die Eigenschaften von virtuellem Speicher unterscheiden sich tatsächlich von denen des physischen Speichers. Der Hauptunterschied zwischen virtuellem und physischem Speicher besteht darin, dass RAM sehr viel schneller ist als virtueller Speicher.
Ein System mit 2 GB physischem RAM und 2 GB virtuellem Speicher bietet also nicht die gleiche Leistung wie ein vergleichbares System mit 4 GB physischem RAM. Um zu verstehen, warum das so ist, muss man wissen, wie virtueller Speicher funktioniert.
Wie funktioniert virtueller Speicher?
Wenn eine Anwendung (einschließlich des Betriebssystems) läuft, speichert sie den Speicherort von Programm-Threads und anderen Daten an einer virtuellen Adresse, während die Daten tatsächlich an einer physischen Adresse im RAM gespeichert sind. Wird dieser RAM-Speicherplatz zu einem späteren Zeitpunkt von einem anderen Prozess dringender benötigt, können die Daten aus dem RAM in den virtuellen Speicher ausgelagert werden.
Der Speichermanager des Computers ist dafür verantwortlich, den Überblick über all diese Daten zu behalten, während sie zwischen dem physischen und dem virtuellen Speicher ausgetauscht werden. Der Speichermanager verwaltet eine Tabelle, die die vom Betriebssystem und den Anwendungen verwendeten virtuellen Adressen den physischen Adressen zuordnet, in denen die Daten tatsächlich gespeichert sind. Wenn Daten zwischen RAM und virtuellem Speicher ausgetauscht werden, wird die Tabelle aktualisiert, damit eine bestimmte virtuelle Adresse immer auf den richtigen physischen Speicherplatz verweist.
Ein Computer kann nur Threads ausführen und Daten bearbeiten, die im RAM und nicht im virtuellen Speicher gespeichert sind. Das Auslagern benötigter Daten in den Arbeitsspeicher nimmt nicht unerhebliche Zeit in Anspruch. Daraus folgt, dass die Verwendung von virtuellem Speicher mit Leistungseinbußen verbunden ist.
Mit anderen Worten: Ein System mit 4 GB Arbeitsspeicher bietet im Allgemeinen eine höhere Leistung als ein System mit 2 GB Arbeitsspeicher und 2 GB virtuellem Speicher, weil die Auslagerung von Daten zu Leistungseinbußen führt, weshalb man sagt, dass virtueller Speicher langsamer ist als Arbeitsspeicher.
Ein potenzielles Problem mit virtuellem Speicher besteht darin, dass ein System einen großen Teil seiner CPU-Ressourcen für die Auslagerung von Daten aufwenden muss, wenn die Menge des Arbeitsspeichers im Vergleich zur Menge des virtuellen Speichers zu gering ist. In der Zwischenzeit kommt die Leistung nützlicher Arbeiten fast zum Stillstand – ein Prozess, der als Thrashing bekannt ist.
Um Thrashing zu verhindern, ist es in der Regel notwendig, die Anzahl der gleichzeitig ausgeführten Anwendungen zu reduzieren oder einfach die Menge des Arbeitsspeichers im System zu erhöhen.
Betriebssysteme, wie die meisten Windows-Versionen, empfehlen im Allgemeinen, den virtuellen Speicher nicht über das 1,5-fache des physischen Arbeitsspeichers hinaus zu erhöhen. Ein System mit 4 GB RAM sollte also nicht mehr als 6 GB virtuellen Speicher haben.
Um die Leistungseinbußen zu minimieren, die durch den Wechsel zwischen physischem und virtuellem Speicher verursacht werden, ist es am besten, das schnellste an das System angeschlossene Speichergerät zu verwenden, um den virtuellen Speicher zu hosten, und den Speicherbereich des virtuellen Speichers auf einer eigenen Partition unterzubringen.
Virtueller Speicher kann mit dem Hauptspeicher eines Computers zusammenarbeiten, um schnellere, flüssigere Operationen zu ermöglichen.
Wie man den virtuellen Speicher in einem System erhöht
Die meisten Betriebssysteme erlauben es dem Benutzer, den virtuellen Speicher über eine Konfigurationsseite zu erhöhen.
- In Windows kann der Benutzer dem System auch erlauben, die Menge an virtuellem Speicher, die dynamisch bereitgestellt wird, zu verwalten.
- Gleichermaßen kann der Benutzer im Mac OS das Einstellungsfeld verwenden, um virtuellen Speicher zuzuteilen.
Arten des virtuellen Speichers: Paging und Segmentierung
Virtueller Speicher kann vom Betriebssystem auf verschiedene Weise verwaltet werden, wobei die beiden gängigsten Ansätze das Paging und die Segmentierung sind.
Paging von virtuellem Speicher
In einem System, das Paging verwendet, wird der Arbeitsspeicher in eine Reihe von Blöcken – in der Regel 4k groß – unterteilt, die Seiten genannt werden. Den Prozessen werden dann gerade so viele Seiten zugewiesen, wie sie für ihren Speicherbedarf benötigen. Das bedeutet, daß immer ein kleiner Teil des Speichers verschwendet wird, außer in dem ungewöhnlichen Fall, daß ein Prozeß genau eine ganze Anzahl von Seiten benötigt.
Im normalen Betriebsablauf werden Seiten (d.h. Speicherblöcke von 4K Größe) zwischen dem RAM und einer Auslagerungsdatei, die den virtuellen Speicher darstellt, ausgetauscht.
Virtuelle Speichersegmentierung
Segmentierung ist ein alternativer Ansatz zur Speicherverwaltung, bei dem anstelle von Seiten fester Größe den Prozessen Segmente unterschiedlicher Länge zugewiesen werden, die genau ihren Anforderungen entsprechen.
Das bedeutet, dass im Gegensatz zu einem ausgelagerten System kein Speicher in einem Segment verschwendet wird.
Die Segmentierung ermöglicht es außerdem, Anwendungen in logisch unabhängige Adressräume aufzuteilen, was die gemeinsame Nutzung erleichtert und die Sicherheit erhöht.
Ein Problem bei der Segmentierung ist jedoch, dass jedes Segment eine unterschiedliche Länge hat und dies zu einer „Fragmentierung“ des Speichers führen kann. Das bedeutet, dass bei der Zuweisung und Freigabe von Segmenten kleine Speicherabschnitte übrig bleiben können, die zu klein sind, um nützlich zu sein.
Wenn sich diese kleinen Abschnitte ansammeln, können immer weniger Segmente mit nützlicher Größe zugewiesen werden. Und wenn das Betriebssystem beginnt, diese kleinen Segmente zu verwenden, dann gibt es eine riesige Anzahl von Segmenten, über die man den Überblick behalten muss, und jeder Prozess muss viele verschiedene Segmente verwenden, was ineffizient ist und die Leistung verringern kann.
Vor- und Nachteile des virtuellen Speichers
Auch wenn der Arbeitsspeicher heute im Vergleich zu den Kosten, als der virtuelle Speicher zum ersten Mal entwickelt wurde, relativ billig ist, ist er immer noch äußerst nützlich und wird in vielen, vielleicht sogar den meisten Computersystemen eingesetzt. Das Hauptproblem bei virtuellem Speicher ist die Leistung.
Vorteile von virtuellem Speicher
- Ermöglicht die gleichzeitige Ausführung mehrerer Anwendungen.
- Ermöglicht die Ausführung größerer Anwendungen in Systemen, die nicht über genügend physischen Arbeitsspeicher verfügen, um sie auszuführen.
- Bietet eine Möglichkeit, den Arbeitsspeicher zu vergrößern, die weniger kostspielig ist als der Kauf von mehr Arbeitsspeicher.
- Provides a way to increase memory in a system which has the maximum amount of RAM that its hardware and operating system can support.
Disadvantages of Virtual Memory
- Does not offer the same performance as RAM.
- Can negatively affect the overall performance of a system.
- Takes up storage space which could otherwise be used for long term data storage.