109 lines
4.8 KiB
Markdown
109 lines
4.8 KiB
Markdown
# Speicherabstraktion [?]
|
|
> Idee, dass Anwendungen und Benutzer nicht direkt mit physischem Speicher interagieren müssen.
|
|
> Sie können stattdessen auf einer höheren, abstrakten Ebene arbeiten
|
|
>
|
|
> Ermöglicht einfachere, flexiblere Verwendung des Speichers, da Details der physischen Speicherhardware
|
|
> vor Benutzer und Anwendung verborgen werden.
|
|
|
|
|
|
## Adressräume
|
|
- Gesamter Bereich von Speicheradressen, welcher durch System/Prozess verwendet werden kann
|
|
- ermöglicht Beschränkung des Zugriffs auf bestimmte Speicherbereiche
|
|
- Sicherheit & Integrität gewährleisten
|
|
- unautorisierten Speicherzugriff verhindern
|
|
|
|
## Relokation
|
|
- Jede Anwendung bekommt eigenen Adressraum des physischen Speichers
|
|
- Dafür Spezialregister in der CPU
|
|
- ermöglichen laden von Programmen in den Speicher ohne Relokation
|
|
- **Basisregister**
|
|
- Startadresse des Programms
|
|
- **Limitregister**
|
|
- Länge des Programms
|
|
- **Nachteil:**
|
|
- Bei jedem Speicherzugriff Addition und Vergleich ausführen
|
|
- Addition benötigt wegen Carry-Bit lange
|
|
- _Vergleich ist fine_
|
|
|
|
> In der Praxis ist die benötigte RAM-Menge oft größer als der physische Speicher
|
|
|
|
## Swapping
|
|
- Prozesse zwischen primären Speicher(RAM) und sekundären Speicher (Festplatte) austauschen
|
|
- Entlastung des RAM durch Auslagerung nicht benötigter Prozesse
|
|
- Kann Leistung beeinträchtigen
|
|
- Zugriff auf sekundären Speicher dauert länger
|
|
- 
|
|
|
|
> Sehr erfolgversprechend, da normale SATA nur Max-Übertragungsgeschwindigkeit von einigen 100MB/s hat
|
|
>
|
|
> → es dauert Sekunden, um ein 1GB-Programm aus-/einzulagern
|
|
|
|
|
|
## Virtual Memory
|
|
- Virtueller Speicher ermöglicht mehr Speicher zu verwenden als vorhanden ist
|
|
- Physischer Speicher und ein Teil der Festplatte werden als virtueller Speicher behandelt
|
|
- BS kann effizienten Gebrauch von begrenzten RAM machen
|
|
- Prozesse und Daten dynamisch zwischen physischem Speicher und sekundärem Speicher verschieben
|
|
- Gesamtleistung optimieren :)
|
|
-
|
|
|
|
## Dynamischer Speicher
|
|
- Speicherplatz, der zur Laufzeit eines Programms dynamisch angefordert, freigegeben wird
|
|
- Speicherplatz während Laufzeit variieren
|
|
- bietet Flexibilität
|
|
- Programme können während Ausführung an sich ändernde Anforderungen reagieren
|
|
- müssen nicht im Voraus Speicherplatz reservieren
|
|
- Wird oft im Heap reserviert
|
|
- Heap wird meist für lokale Variablen, Funktionsaufrufe verwendet
|
|
- ermöglicht Heap dynamische Zuweisung von Speicherplatz
|
|
- Programmierer ist für Freigabe von Speicherplatz verantwortlich
|
|
- vernachlässigte Freigabe kann zu Speicherlecks führen
|
|
- einige Programmiersprachen haben eine automatische Speicherverwaltung (_Garbage Collection_)
|
|
- 
|
|
|
|
## Paging
|
|
- Speicherverwaltungstechnik
|
|
- Virtueller Speicher wird in kleine, gleichgroße Blöcke (_Seiten_) unterteilt
|
|
- Können dann in physischem Speicher / Festplatte ausgelagert werden ([Swapping](#swapping))
|
|
- Adressen werden mithilfe von Indizierung, Basisregistern und Segmentregistern generiert
|
|
- = virtuelle Adresse, bildet virtuellen [Adressraum](#adressr-ume)
|
|
- virtueller Adressraum besteht aus Einheiten fester Größe
|
|
- werden _Seitenrahmen (page frame)_ genannt
|
|
- Beispiel:
|
|
- 
|
|
- Seiten und Seitenrahmen sind hier 4KB
|
|
- normalerweise von 512 Byte - 1GB
|
|
- Present-/Absent-Bit zeigt an, ob Seiten physisch im Speicher vorhanden sind
|
|
- Greift Programm auf einen Speicherbereich zu, der noch nicht in den Speicher geladen wurde
|
|
- Seitenfehler (_page fault_) wird ausgelöst
|
|
- BS gibt einen Seitenrahmen im Speicher frei
|
|
- BS lädt entsprechende Seite in jetzt freien Seitenrahmen
|
|
- Befehl wird nochmal ausgeführt
|
|
- 
|
|
- Muss schnell gehen, da es sonst zu Engpass wird
|
|
- Meist < 0,2 ns
|
|
- Jeder Prozess hat eigenen Adressraum
|
|
- benötigt eigene Seitentabelle
|
|
|
|
|
|
## Memory Management Unit (MMU)
|
|
- virtuelle Adresse, die von Prozessen/Programmen verwendet werden in physische Adressen umwandeln
|
|
- mithilfe von Seitentabellen oder anderen Mechanismen
|
|
- Schlüsselelement des Speichermanagements
|
|
- zentrale Rolle bei Implementierung von Funktionen
|
|
- wie virtuellem Speicher und Paging
|
|
- 
|
|
- 16Bit Adresse wird in 4-Bit-Seitennummer und 12Bit Offset zerlegt
|
|
- 4 Bit → 16 Seiten
|
|
- 12 Bit → 4096 Byte adressierbar
|
|
- 
|
|
- [YouTube: _Virtuelle Speicherverwaltung mit MMU_](https://www.youtube.com/watch?v=QPL-xJ6ePqQ)
|
|
|
|
## Translation Lookaside Buffer
|
|
- Assoziativer Speicher (TLB) für schnellere Adressumwandlung der MMU
|
|
- Puffert Seitenzugriffe
|
|
- ermöglicht direkteren Zugriff auf wichtige Informationen der Speichertabelle
|
|
- ohne Zugriff auf Seitentabelle
|
|
- enthält nur wenige Einträge
|
|
- Schnelle Suche
|
|
- Arbeitet als Cache für MMU |