This commit is contained in:
David Schirrmeister 2024-05-31 09:32:32 +02:00
parent ce02d02007
commit 4207158b07
8 changed files with 110 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@ -18,6 +18,7 @@
<toc-element topic="11_Energieeffizienz.md"/> <toc-element topic="11_Energieeffizienz.md"/>
<toc-element topic="12_Virtualisierung.md"/> <toc-element topic="12_Virtualisierung.md"/>
<toc-element topic="13_Speicherverwaltung.md"/> <toc-element topic="13_Speicherverwaltung.md"/>
<toc-element topic="14_Speicherabstraktion.md"/>
</toc-element> </toc-element>
<toc-element toc-title="OOAD"> <toc-element toc-title="OOAD">
<toc-element topic="IntroductionOOAD.md"/> <toc-element topic="IntroductionOOAD.md"/>

View File

@ -0,0 +1,109 @@
# 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
- ![image_285.png](image_285.png)
> 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_)
- ![image_286.png](image_286.png)
## 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:
- ![image_287.png](image_287.png)
- 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
- ![image_288.png](image_288.png)
- 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
- ![image_289.png](image_289.png)
- 16Bit Adresse wird in 4-Bit-Seitennummer und 12Bit Offset zerlegt
- 4 Bit → 16 Seiten
- 12 Bit → 4096 Byte adressierbar
- ![image_290.png](image_290.png)
- [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