update
This commit is contained in:
95
Writerside/topics/BS/13_Speicherverwaltung.md
Normal file
95
Writerside/topics/BS/13_Speicherverwaltung.md
Normal file
@ -0,0 +1,95 @@
|
||||
# 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_
|
||||
- 
|
||||
|
Reference in New Issue
Block a user