97 lines
3.4 KiB
Markdown
97 lines
3.4 KiB
Markdown
# 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 | |
|
|
- Nachteil:
|
|
- zwangsläufig interne Fragmentierung
|
|
- sehr ineffizient
|
|

|
|
|
|
### 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
|
|
- wie sucht/findet das BS einen freien Speicherbereich
|
|
- **First Fit**
|
|
- sucht bei jeder Anforderung ab Anfang des Adressraums
|
|
- **Next Fit**
|
|
- sucht ab letzter Zuweisung
|
|
- **Best Fit**
|
|
- Sucht immer den freien Bereich, der am besten zur Anforderung passt
|
|
- am wenigsten Fragmentierung
|
|
- 
|
|
|
|
|
|
## 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
|
|
|
|
### 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
|
|
- 
|
|
- Linux verwendet für Zuweisung von Speicherseiten zu Prozessen
|
|
- Informationen in _/proc/buddyinfo_
|
|
- 
|
|
|