Virtueller Speicher und Paging
Der virtuelle Speicher weist jedem Programm einen eigenen großen, zusammenhängenden Adressraum zu, den die Hardware und das Betriebssystem in festgroße Seiten auf den physikalischen Speicher abbilden. Dies bietet Isolation, Schutz und die Illusion von mehr Speicher, als physisch vorhanden ist.
Definition
Virtueller Speicher ist eine Speicherverwaltungstechnik, die die von einem Programm verwendeten virtuellen Adressen über Seitentabellen auf physikalische Speicheradressen abbildet, den Speicher in festgroße Seiten unterteilt und es ermöglicht, dass Seiten je nach Bedarf im physikalischen Speicher oder auf dem Hintergrundspeicher liegen.
Scope
Dieses Thema behandelt die Adressübersetzung mittels Seitentabellen, den Translation Lookaside Buffer (TLB), der Übersetzungen zwischenspeichert, Seitenfehler und Demand Paging, den Seitenersatz und das Working-Set-Prinzip sowie den Schutz, den der virtuelle Speicher bietet. Es liegt an der Schnittstelle von Architektur und Betriebssystemen. Ausgeschlossen sind die Dateispeicherung von ausgelagerten Daten (Dateisysteme) und die On-Chip-Daten-Zwischenspeicherung (Cache-Organisation und -Richtlinien), obwohl es mit beiden interagiert.
Core questions
- Wie werden virtuelle Adressen über Seitentabellen in physikalische Adressen übersetzt?
- Wie beschleunigt der TLB die Übersetzung, und was geschieht bei einem TLB-Miss?
- Was passiert bei einem Seitenfehler, und wie wird Demand Paging gehandhabt?
- Wie leitet das Working-Set-Konzept den Seitenersatz und verhindert Thrashing?
Key concepts
- virtuelle und physikalische Adressräume
- Seiten und Seitenrahmen
- Seitentabellen
- Translation Lookaside Buffer (TLB)
- Seitenfehler und Demand Paging
- Seitenersatz
- Working Set und Thrashing
- Speicherschutz
Key theories
- Working-Set-Modell
- Das Working Set ist die Menge der Seiten, die ein Prozess über ein jüngstes Zeitfenster referenziert; das Residenthalten des Working Sets jedes aktiven Prozesses im physikalischen Speicher vermeidet Thrashing, bei dem übermäßiges Paging die Leistung zusammenbrechen lässt, und beeinflusst Ersatz- und Zulassungsentscheidungen.
Mechanisms
Die virtuelle Adresse eines Programms wird in eine Seitennummer und einen Offset aufgeteilt. Die Seitennummer indiziert Seitentabellen (oft mehrstufig), um den physikalischen Frame zu finden; der TLB speichert aktuelle Übersetzungen zwischen, um das Durchsuchen der Tabellen bei jedem Zugriff zu vermeiden. Wenn eine referenzierte Seite nicht resident ist, überträgt ein Seitenfehler die Kontrolle an das Betriebssystem, das die Seite vom Hintergrundspeicher abruft und möglicherweise eine andere Seite gemäß einer Ersatzrichtlinie auslagert, die durch Lokalität und Working-Set-Verhalten gesteuert wird.
Clinical relevance
Virtueller Speicher ist grundlegend für moderne Betriebssysteme: Er isoliert Prozesse voneinander für Sicherheit und Stabilität, ermöglicht vielen Programmen die gemeinsame Nutzung des physikalischen Speichers und erlaubt die Ausführung von Programmen, die größer als der physikalische RAM sind. Das Verhalten von TLB und Seitenfehlern beeinflusst die Leistung erheblich, und das Layout des Adressraums untermauert Schutz- und Speichersicherheitsmechanismen.
History
Der virtuelle Speicher entstand mit dem Atlas-Computer in Manchester in den frühen 1960er Jahren und führte Paging und den Seitenfehlermechanismus ein. Dennings Working-Set-Modell von 1968 lieferte eine prinzipielle Erklärung von Lokalität und Thrashing. Hardware-Unterstützung durch TLBs und mehrstufige Seitentabellen sowie spätere Funktionen wie große Seiten machten den virtuellen Speicher in Allzwecksystemen allgegenwärtig.
Key figures
- Peter J. Denning
- Maurice Wilkes
- John L. Hennessy
- Abraham Silberschatz
Related topics
Seminal works
- denning1968
- hennessy2019
- silberschatz2018
Frequently asked questions
- Was passiert bei einem Seitenfehler?
- Ein Seitenfehler tritt auf, wenn ein Programm auf eine virtuelle Seite zugreift, die sich derzeit nicht im physikalischen Speicher befindet. Die Hardware fängt dies ab und übergibt die Kontrolle an das Betriebssystem, das die Seite auf dem Hintergrundspeicher lokalisiert, sie in einen freien oder ausgelagerten Frame lädt, die Seitentabellen aktualisiert und das Programm fortsetzt, als wäre nichts geschehen.
- Was ist Thrashing?
- Thrashing ist ein Leistungszusammenbruch, wenn die kombinierten Working Sets der aktiven Prozesse den physikalischen Speicher übersteigen, sodass das System die meiste Zeit damit verbringt, Daten ein- und auszulagern, anstatt nützliche Arbeit zu verrichten. Das Residenthalten der Working Sets oder die Reduzierung der Last vermeidet dies.