Speicherverwaltung (Betriebssysteme)
Die Speicherverwaltung von Betriebssystemen weist Prozessen physischen Speicher zu, implementiert Paging und Segmentierung, wählt aus, welche Seiten resident bleiben sollen, und gibt Speicher frei, wobei sie zwischen den Anforderungen von Programmen und dem begrenzten physischen RAM vermittelt.
Definition
Die Speicherverwaltung von Betriebssystemen ist die Menge von Richtlinien und Mechanismen, mittels derer das Betriebssystem Prozessen physischen Speicher zuweist, deren Adressräume durch Paging oder Segmentierung organisiert und entscheidet, welche Daten im Speicher verbleiben und welche auf dem Hintergrundspeicher ausgelagert werden.
Scope
Dieses Thema behandelt die Rolle des Betriebssystems bei der Verwaltung des Hauptspeichers: Adressraum-Layout, zusammenhängende Zuweisung und Fragmentierung, Paging und Segmentierung, Seitenersetzungsalgorithmen (FIFO, LRU, Clock, Optimal), Frame-Zuweisung und Richtlinien zur Vermeidung von Thrashing. Es ergänzt die Hardware-Sicht der virtuellen Speicherverwaltung und konzentriert sich auf die OS-Richtlinien. Es schließt Hardware-Übersetzungsstrukturen (virtueller Speicher und Paging) und die Dateispeicherung auf Datenträgern (Dateisysteme) aus.
Core questions
- Wie weist das Betriebssystem Prozessen physischen Speicher zu und begrenzt die Fragmentierung?
- Wie organisieren Paging und Segmentierung einen Adressraum?
- Welcher Seitenersetzungsalgorithmus nähert sich am besten der Verdrängung der Seite an, die am wenigsten wahrscheinlich bald verwendet wird?
- Wie werden Frames unter Prozessen zugewiesen, um Working Sets resident zu halten und Thrashing zu vermeiden?
Key concepts
- Adressraum-Layout
- zusammenhängende Zuweisung und Fragmentierung
- Paging und Segmentierung
- Seitenersetzungsalgorithmen (FIFO, LRU, Clock, Optimal)
- Frame-Zuweisung
- Demand Paging
- Thrashing und Working Set
- Speicherfreigabe
Key theories
- Seitenersetzung und Lokalität
- Da die ideale Richtlinie, die Seite zu verdrängen, die am weitesten in der Zukunft verwendet wird, nicht realisierbar ist, nähern sich praktische Algorithmen (LRU, Clock) dieser mit Informationen über die jüngste Nutzung an; ihre Wirksamkeit hängt von der Lokalität ab, die durch das Working-Set-Modell erfasst wird.
Mechanisms
Das Betriebssystem verfolgt freien und zugewiesenen Speicher und bildet den Adressraum jedes Prozesses ab, üblicherweise durch Paging, das den Speicher in Frames fester Größe unterteilt. Bei einem Seitenfehler lädt es die benötigte Seite und verdrängt eine residente Seite, die durch einen Ersetzungsalgorithmus wie Clock oder LRU ausgewählt wurde. Es weist Frames unter Prozessen zu, um deren Working Sets resident zu halten; wenn die Nachfrage die Kapazität übersteigt, reduzieren Working-Set- und Seitenfehlerfrequenz-Richtlinien die Multiprogrammierung, um Thrashing zu verhindern.
Clinical relevance
Eine effektive Speicherverwaltung ermöglicht es vielen Programmen, begrenzten RAM reibungslos zu teilen, und ist entscheidend für den Systemdurchsatz und die Reaktionsfähigkeit. Eine schlechte Ersetzung oder Überbelegung führt zu Thrashing und erheblichen Verlangsamungen, während Funktionen wie Speicherüberbelegung (memory overcommit), Komprimierung und Copy-on-Write die Effizienz moderner Server, Container und virtueller Maschinen untermauern.
History
Die Speicherverwaltung entwickelte sich von einfachen zusammenhängenden Zuweisungen und Overlays zu Paging und Segmentierung, als der virtuelle Speicher in den 1960er und 1970er Jahren reifte. Dennings Working-Set-Theorie klärte, wie Frames zugewiesen und Thrashing vermieden werden können, und Ersetzungsalgorithmen wie die Clock-Approximation wurden in Produktionsbetriebssystemen Standard.
Key figures
- Peter J. Denning
- Abraham Silberschatz
- Andrew S. Tanenbaum
Related topics
Seminal works
- silberschatz2018
- denning1968
- tanenbaum2014os
Frequently asked questions
- Was ist der Unterschied zwischen Paging und Segmentierung?
- Paging unterteilt den Speicher in Seiten und Frames fester Größe, was die Zuweisung vereinfacht und externe Fragmentierung eliminiert. Segmentierung unterteilt einen Adressraum in logisch sinnvolle Segmente variabler Größe (wie Code, Stack, Heap). Einige Systeme kombinieren sie, indem sie innerhalb von Segmenten Paging verwenden.
- Warum kann das Betriebssystem nicht immer die optimale Seitenersetzungsstrategie verwenden?
- Die optimale Strategie verdrängt die Seite, die am längsten nicht verwendet wird, was die Kenntnis der Zukunft erfordert. Da das Betriebssystem zukünftige Referenzen nicht kennen kann, verwendet es Annäherungen wie „least-recently-used“ oder den Clock-Algorithmus, die aus der jüngsten Vergangenheit auf die wahrscheinliche zukünftige Nutzung schließen.