Virtuelle Speicherverwaltung
(Weitergeleitet von Virtueller Speicher) Für dieses wichtige informationstechnische Konzept fehlen noch Belege, Hintergründe, Details etc.
Schemabild der Anwendung des virtuellen Speichermanagement:
links: virtueller Speicherraum pro Prozess, Speicher ist linear und unfragmentiert
rechts: reale Speicherquellen, typischerweise RAM oder Festplatte, mehrere, auch kleine Speicherfragmente können verwendet werden; in rot Speicherverwendung anderer Prozesse, unsichtbar im virtuellen Speicherraum
Die virtuelle Speicherverwaltung (engl. virtual memory management, VMM) ist eine spezielle Speicherverwaltung in einem Computer. Die Übersetzung des englischen Begriffs stellt eine Hypallage dar – nicht der Verwaltungsvorgang, sondern der zu verwaltende Speicher ist virtuell. Der virtuelle Speicher bezeichnet den vom tatsächlich vorhandenen Arbeitsspeicher unabhängigen Adressraum, der einem Prozess vom Betriebssystem zur Verfügung gestellt wird.
Das Konzept entstand in den 1950er Jahren und findet heute in nahezu allen modernen Betriebssystemen Verwendung.
2 Motivation
3 Funktionsweise
5 Technik
5.1 Platzierungsstrategien von Betriebssystemen
5.2 Paging
5.3 Swapping
5.4 Seitenersetzungsstrategien von Betriebssystemen
5.5 Speicherfragmentierung
5.6 Zuordnung von virtuellen Pages zu realen Pageframes
Das Konzept der virtuellen Speicherverwaltung entstand aus der Trennung in primäre Speichermedien, auf die der Prozessor direkt Zugriff hatte (meist Magnetkernspeicher), und sekundäre externe Speichermedien (meist Magnettrommelspeicher) in den Computern der 1950er Jahre und dem Wunsch, diese automatisch auf gleicher Ebene zu verwalten.[1]
Das Konzept des virtuellen Speichers wurde 1956 vom Physiker Fritz-Rudolf Güntsch an der Technischen Universität Berlin entwickelt.[2][3]
In Großbritannien wurde das Konzept beim Atlas-Computer Projekt von Tom Kilburn und Kollegen 1959 in einem Prototyp demonstriert. Der Computer kam 1962 auf den Markt. Das Konzept setzte sich im Verlauf der 1960er Jahre bei den meisten Betriebssystemen von Großrechnern durch (wie TSOS der Spectra 70 von RCA oder System/360 (Modell 67) und deren Nachfolger System/370 von IBM). Da zur effizienten Implementierung auch neue Hardware entwickelt werden musste, gab es in den 1960er Jahren noch Widerstände gegen eine vollständige Implementierung in Betriebssystemen. Systematische Tests, die ein Team um David Sayre bei IBM Ende der 1960er Jahre durchführte, fielen aber eindeutig zu Gunsten des Konzepts virtueller Speicher aus.[4][5]
Das Konzept fand in den 1970er Jahren Eingang auch bei Minirechnern, wie in das VMS Betriebssystem von DEC für dessen VAX-Rechner und in Unix (in der BSD Version). Beim PC setzte sich das Konzept mit der Weiterentwicklung der Prozessoren (bei Intel mit dem Protected Mode im Intel 80286 und dem Intel 80386 mit Memory Management Unit) auch in den Betriebssystemen durch, bei Microsoft ab Microsoft Windows 95.
Motivation[Bearbeiten]
Die ursprüngliche Motivation für eine Abstraktion der Speicheradressen mit virtuellen Adressen war die Vereinheitlichung der Benutzung und die mögliche Zusammenfassung verschiedener Speicherquellen. Dies wird von Güntsch in seiner Dissertation von 1957 so beschrieben:
„Der Programmierer braucht auf das Vorhandensein von Schnellspeichern keine Rücksicht zu nehmen (er braucht nicht einmal zu wissen, daß solche vorhanden sind). Denn es gibt nur eine Sorte von Adressen, mit denen programmiert werden kann, als wäre nur ein Speicher vorhanden.“
– Eike Jessen: [3]
Die virtuelle Speicherverwaltung ermöglicht zudem die Implementierung von Speicherschutzmechanismen zur Separierung von
Programmen untereinander („horizontale Trennung“): Programme können (z. B. im Fehlerfall) nicht auf Speicher anderer Programme zugreifen;
Programmen gegen das Betriebssystem („vertikale Hierarchie“): Das Funktionieren des Betriebssystems darf nicht durch (fehlerhafte) Anwendungsprogramme gefährdet werden.
Eine weitere nützliche Eigenschaft des virtuellen Adressraums ist die Möglichkeit, jedem Prozess einen initial unfragmentierten, exklusiven Speicherraum zur Verfügung zu stellen. Ohne virtuellen Speicher entstünde oft Speicherfragmentierung des physischen Adressraums (prozess-übergreifend), welche durch virtuellen Speicher (pro Prozess, sowie meist deutlich größeren Adressraum als der phys. Speicher) weitgehend vermieden werden kann.
Funktionsweise[Bearbeiten]