zusammenfassungen/Writerside/topics/02/BS/13_Speicherverwaltung.md
David Schirrmeister 25ac114405 update
2024-12-05 13:57:04 +01:00

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
![image_281.png](image_281.png)
- 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
![image_282.png](image_282.png)
### 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
- ![image_450.png](image_450.png)
## 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
- ![image_283.png](image_283.png)
- Linux verwendet für Zuweisung von Speicherseiten zu Prozessen
- Informationen in _/proc/buddyinfo_
- ![image_284.png](image_284.png)