diff --git a/Writerside/images/image_285.png b/Writerside/images/image_285.png new file mode 100644 index 0000000..71f5bea Binary files /dev/null and b/Writerside/images/image_285.png differ diff --git a/Writerside/images/image_286.png b/Writerside/images/image_286.png new file mode 100644 index 0000000..880c0a2 Binary files /dev/null and b/Writerside/images/image_286.png differ diff --git a/Writerside/images/image_287.png b/Writerside/images/image_287.png new file mode 100644 index 0000000..bd73529 Binary files /dev/null and b/Writerside/images/image_287.png differ diff --git a/Writerside/images/image_288.png b/Writerside/images/image_288.png new file mode 100644 index 0000000..368266a Binary files /dev/null and b/Writerside/images/image_288.png differ diff --git a/Writerside/images/image_289.png b/Writerside/images/image_289.png new file mode 100644 index 0000000..41e8cc1 Binary files /dev/null and b/Writerside/images/image_289.png differ diff --git a/Writerside/images/image_290.png b/Writerside/images/image_290.png new file mode 100644 index 0000000..e696ecb Binary files /dev/null and b/Writerside/images/image_290.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree index 7efafbd..8b34fdb 100644 --- a/Writerside/in.tree +++ b/Writerside/in.tree @@ -18,6 +18,7 @@ + diff --git a/Writerside/topics/BS/14_Speicherabstraktion.md b/Writerside/topics/BS/14_Speicherabstraktion.md new file mode 100644 index 0000000..45a3777 --- /dev/null +++ b/Writerside/topics/BS/14_Speicherabstraktion.md @@ -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 \ No newline at end of file