3.4 KiB
3.4 KiB
Speicherverwaltung
Speicherhierarchie
Registers
- schnellste und kleinste Form des Speichers
- direkt in Prozessor
- Speicherung temporärer Daten und Zwischenergebnisse
Cache
- kleinerer, schnellerer Speicher
- zwischen Register und RAM
Hauptspeicher (RAM)
- physischer Speicher
- Prozessor kann direkt zugreifen
Virtueller Speicher
- langsamerer Speicher
- Erweiterung des RAMs
Speicheradressierung
- Prozess, durch den ein Computer auf den physischen/virtuellen Speicher zugreift
Physische Adressierung | Logische Adressierung |
---|---|
direkter Zugriff auf bestimmten Speicherort im physischen RAM | Adresse von Prozess generiert |
physische Adresse = tatsächliche Adresse des Speicherorts | wird später in physische Adresse umgewandelt |
Virtuelle Adressierung |
Speicherpartitionierung
- Aufteilung des physischen Speichers in logische Abschnitte
- können von verschiedenen Teilen des Systems genutzt werden
- Mögliche Zwecke:
- Betriebssystemcode
- Anwendungsdaten
- Temporäre Variablen
- ...
Statische Partitionierung
- Aufteilung in Partitionen gleicher / unterschiedlicher Größe
- im Idealfall möglichst passgenau
- möglichst wenig interne Fragmentierung
- Falls unterschiedliche Größe
- BS verwaltet Warteschlange
-
eigene für jede Partition eine für alle :( bestimmte Partitionen werden seltener/nie verwendet
-
- BS verwaltet Warteschlange
- im Idealfall möglichst passgenau
- Nachteil:
Dynamische Partitionierung
-
BS weist jedem Prozess eine zusammenhängende Partition zu
- mit exakt benötigter Größe
- dabei auch Fragmentierung
-
Darstellung des Speichers durch BS als verkettete Liste
- Kennzeichnung, ob frei/belegt
- Startadresse
- Länge
- Zeiger auf nächsten Eintrag
-
Unterschiedliche Zuteilungskonzepte
Buddy-Speicherverwaltung
- Ziel: Fragmentierung von Speicherblöcken minimieren
- wird oft in BS und in der Verwaltung von Speicher-Pools verwendet
- basiert auf
- Blöcke gleicher Größe als Buddies zusammenfassen
- effizienter Speicherzugriff/-freigabe ermöglichen
- Blöcke gleicher Größe als Buddies zusammenfassen
Erstellung
- Am Anfang ein Bereich, der gesamten Speicher abdeckt
- Sobald ein Prozess Speicherplatz anfordert
- Speicherkapazität zur nächsthöheren Zweierpotenz aufrunden
- entsprechenden, freien Bereich suchen
- Falls nicht existent
- Nach Bereich doppelter Größe suchen
- in zwei Teile teilen (Buddies)
- eine Hälfte wird anfordernden Prozess zugewiesen
- Nach Bereich doppelter Größe suchen
- Falls nicht existent
- Linux verwendet für Zuweisung von Speicherseiten zu Prozessen