690 likes | 873 Views
Speicher- verwaltung. Thrashing. Speicherorganisation. Virtueller Speicher. Seitenersetzung. Segmentierung, Caching. Speicherverwaltung :. Einteilung Anwenderprogramme interner Speicher: garbage collector Hauptspeicher Aufteilung auf Prozesse: globaler vs. Lokaler Speicher
E N D
Speicher- verwaltung
Thrashing Speicherorganisation Virtueller Speicher Seitenersetzung Segmentierung, Caching Speicherverwaltung
Speicherverwaltung : Einteilung • Anwenderprogramme interner Speicher: garbage collector • Hauptspeicher Aufteilung auf Prozesse: globaler vs. Lokaler Speicher • Massenspeicher internes Management bei Dateien (DBMS) Strategien • Früher: Komplette Speicherbelegung (Prozeß) auslagern (swapping: langsam) • Jetzt: Speicherteile (Prozeßteile) auslagern Speicherverwaltung
Speicherorganisation • Zuordnung durch feste Tabellen Tabelleneinheit (z.B. 1Bit) gibt Zustand einer Speichereinheit (z.B. 32Bit-Wort) an 9 8 A 7 6 ... 1 1 1 0 0 1 1 1 1 1 FREI 5 ... 9 8 7 6 5 4 3 2 1 0 4 3 C 2 1 B 0 Speicherbelegung Belegungstabelle Speicherverwaltung
Speicherorganisation FREI.len = 2 FREI.start = 5 C.len = 3 C.start = 2 B.len = 2 B.start = 0 Anfang A.len = 3 A.start = 7 • Zuordnung durch verzeigerte Listen 9 8 A 7 6 FREI 5 4 3 C 2 1 B 0 Speicherbelegung Liste derBelegung Speicherverwaltung
Speicherorganisation: Belegungsstrategien • FirstFit Nimm das erste, ausreichend große Stück. Aber: Reststücke • NextFit wie FirstFit, aber führe Speicherindex mit • BestFit kleinste freie Stück, das paßt. Aber: winzige, unbrauchbare Reststücke • WorstFit größte freie Stück, um große Reststücke zu erreichen • QuickFit eine Liste pro Anforderungsgröße, also pro Datentyp • Buddy-Systeme Listen von 2n großen Speicherstücken: 256B, 512B, 1024B, 2048B, ... Kein passendes Stück da: Zerteilen des nächstgrößeren. Schnelles Verschmelzen mit jeweils dem Partnerstück bei gleichem Adressenanfang: 0xxx + 1xxx Xxxx Speicherverwaltung
Speicherorganisation; Buddy-System • Beispiel Anforderung: 3 Einheiten • Zugeteilt: 4 = 22Einheiten 0xx x x x 0 x x Speicherverwaltung
Speicherorganisation; Buddy-System • Beispiel 1 x x Anforderung: 3 Einheiten Zugeteilt: 4 = 22Einheiten 0xx x x x Unbenutzt: 1xx - Stück Freigabe: 0xx - Stück 0 x x Verschmelzen: 0xx mit 1xx- Buddy zu Xxx - Stück Speicherverwaltung
Buddy-System: Beispiel • Anforderungsreihenfolge 80kB, 8kB, 9kB,3kB,50kB • Aufbau einer Baumstruktur für 256 kB Speicher 256kB 128kB 128kB 128kB = 80kB+48kB 64kB 64kB = 50+14kB 64kB 32kB 32kB 16kB 16kB 9+7kB 8kB 8kB 4kB 4kB 3+1kB Speicherverwaltung
Speicherorganisation Bewertung der Belegungsstrategien • FirstFit>NextFit, WorstFit, BestFit • ex. Kenntnisse über Speicheranforderungen: QuickFit • Leistungsfähigkeit der buddy-Systeme: mittl. Anforderung = ? tats. Belegung Überschlagsrechnung! Speicherverwaltung
Speicherorganisation Bewertung der Belegungsstrategien • Leistungsfähigkeit der buddy-Systeme: Überschlagsrechnung: mittl. Anforderung = 75%, vergeudet 25% tats. Belegung schnell, aber nicht effizient • Verbesserung: halbe oder viertel Partner (aber: Verwaltung!) Speicherverwaltung
Frage • Angenommen, Sie haben sowohl einige unregelmäßige Speicheranfragen als auch viele gleicher, vorher bekannter Größe. Welche Strategie implementieren Sie? Antwort: Hier ist eine Mischstrategie sinnvoll, also sowohl eine Qickfit-Verwaltung als auch ein FirstFit-Verwaltung. Speicherverwaltung
Speicherorganisation Fragmentierung und Verschnitt • Interner Verschnitt Interne Zersplitterung durch Heap-Belegung Abhilfe: garbagecollector des Programmiersystems • Externer Verschnitt Freier Platz zwischen den Programmen im Auslagerungsbereich Abhilfen: • zuerst Einlagern großer Prozesse, dann Auffüllen mit kleinen. swapping kleiner Programme (gegen SJF-Strategie!) • Speicheraufteilung in verschieden große Bereiche, jeder mit eigener Warteschlange (IBM OS/MFT): ineffizient! • Zusammenschieben des Speichers: zeitaufwändig! Speicherverwaltung
Thrashing Speicherorganisation Virtueller Speicher Seitenersetzung Segmentierung, Caching Speicherverwaltung
Virtueller Speicher - Wozu? Probleme & Fixes • Speicherzusatzbelegungvon Programmen • Unix: Prozeß auslagern, neuen Speicher reservieren, neu einlagern • Externen Verschnitt zum Prozeß dazuschlagen (stack & heap) • Relozierungvon Programmcode • rel. Adressen für GOTO bei allen CPU-Typen (!?) • bei Einlagerung oder zur Laufzeit absolute Adr. errechnen • Speicherschutzvor Programmen • Betriebssystemkern darf nicht korrumpiert werden (fences,limits), spezielle HW-Einheit • Programmiermodell soll klar, einfach und uniform sein (Fehlervermeidung) Speicherverwaltung
Virtueller Speicher 13000 ¥ ... ... 10000 C000 ... B8FF 9000 ... 8FFF ... A900 8000 A783 7FFF ... ... 2784 0000 Fragmentierter, endlicher, Beliebig langer, physikalischer Speicher durchgehender virt. Speicher Forderung: lineares Programmiermodell • Fragmente sollen zusammenhängend erscheinen • Bei Speicheranforderung werden nur inaktive Programmteile ausgelagert Implementierung durch Memory Management Unit MMU Speicherverwaltung
Grundmodell virtueller Adreßkonversion PageNr offset 1 1 0 LSB HSB offset Basisadresse 6 ~ ~ Seiten-rahmen Page 6 7 Basisadresse 7 6 Basisadresse 6 ~ ~ 5 Basisadresse 5 4 Basisadresse 4 3 Basisadresse 3 Page 7 2 Basisadresse 2 1 Basisadresse 1 ~ ~ 0 Basisadresse 0 Seitentabelle Hauptspeicherbelegung 6 Virtuelle Adresse Physikal. Adresse 3 Bit Basisadr. ex. nicht: page fault interrupt! Suchen und Einlagern der benötigten Seite Prozeßkontext Speicherverwaltung
Adreßkonversion Problem: virt. Adreßraum >> phys.Adreßraum Riesige Seitentabellen! SeitentabellebeiSeitengröße = offset = 12 Bit 4KB Seitenrahmen (page frame) Wortgröße Tabellengröße 16 Bit: 4 Bit 16 Einträge 32 Bit: 20 Bit 1 Mill. Einträge 64 Bit: 52 Bit 4 1015 Einträge • Fix: Adreßbegrenzung Vorteil: kleiner Adreßraum, z.B. 30 Bit (1 GB) 18 Bit 256 KB Tabelle, aber auch bei 50KB-Prozeß! Nachteil: Vergeudung von Platz, da meist nicht benötigt ! Speicherverwaltung
Adreßkonversion Prozeßkontext Seitentabelle • Multi-Level-Tabellen Linux: 10 Bit 10 Bit 12 Bit-Seite 001 01 offset Virtuelle Adresse Linux: 1 MB Tabellen, 1 KB Tabelle jeweils 4KB 4GB Speicher 3 nicht existent ~ ~ 2 Seitenadresse5 7 Tafeladresse 7 1 Seitenadresse 1 6 nicht existent 0 Seitenadresse 2 5 nicht existent Page 3 4 nicht existent offset 3 nicht existent 3 nicht existent ~ ~ 2 Seitenadresse 6 2 nicht existent 1 Seitenadresse 3 Tafeladresse 1 1 0 Seitenadresse 4 0 Tafeladresse 0 Page 7 3 nicht existent ~ ~ 2 nicht existent 1 nicht existent 0 Seitenadresse7 page base table Seitentabellen 2 Speicherbelegung (Seitentabelle1) Speicherverwaltung
Adreßkonversion: 3-Level Tabellen SPARC-Architektur (SUN) 0 0 0 0 Speicherverwaltung
Frage • Angenommen, bei jedem Zugriff muss die virtuelle Adresse durch eine 3-level-Tabelle in eine physikalische Adresse übersetzt werden. • Wieviel Leseschritte müssen mit der virtuellen Adresse durchgeführt werden, um schließlich das gewünschte Datum lesen zu können? • Wie viele Verzögerungstakte erfährt also der Zugriff? • Antwort • Dekodieren der virtuellen Adresse: • Auslesen der 1.Level-Tabelle: 1. Schritt • Auslesen der 2.Level-Tabelle: 2. Schritt • Auslesen der 3.Level-Tabelle: 3. Schritt • Auslesen der physikalischen Adresse: 4. Schritt • 3 von 4 Lesezugriffen sind overhead, also nur ¼ Leistung! Speicherverwaltung
Adreßkonversion: 4-Level-Tabellen MC 68030 Motorola Problem: 4 von 5 Speicherzugriffen sind overhead Speicherverwaltung
Adreßkonversion • Problem: Multi-Level-Tabellen sind langsam SPARC: 3-stufig, MC68030 4-stufig (80% länger) und benötigen Tabellenplatz für jeden Prozeß extra. • Lösung: Invertierte Seitentabellen, geordnet nach reell. Seiten Nimm nur die erfolgreichen Zugriffe. Speicherverwaltung
Adreßkonversion ProcId virtuelle reelle Seite 1 0 0 0 0 0 0 1 0 1 0 0 0 1 Assoziativ- 0 1 0 0 1 0 2 speicher 1 0 0 1 0 1 3 0 1 0 0 0 0 5 0 1 1 0 0 0 7 Abfragewort 0 1 0 0 0 0 5 • Problem: Inverse Tabellen sind langsam Durchsuchen der gesamten Tabelle • Lösung: Assoziativer Tabellencache TLB X ß Antwort Translation LookasideBuffer TLB Speicherverwaltung
Assoziativspeicher • Realisierung eines CAM Anfrage Hit Speicherverwaltung
Virtueller Speicher: Unix 4GB I/O map kernel 3GB user stack 2GB • shared libs • u_area • heap 1GB • data user program code 0 GB Linux: • 32 Bit, 0-3GB in user mode • stack wächst nach unten, heap nach oben (malloc) • Kernel nur in kernel mode zugreifbar, abgebildet auf 0-1GB phys. Adr. • Memory-mapped devices (I/O map im kernel mode) Speicherverwaltung
Virtueller Speicher: Windows NT • Version 5,5.1 (Win2000/XP): 32 Bit (nicht 64 Bit Windows XP - X64/Vista) • Virtual memory manager für Seitenverwaltung 4KB-64KB Seiten • 2-stufige Seitentabellen page directory/ page table = PFD • Shared memory Sonderregelung 3.Stufe:zentraleprototype page table • Kernelmode Adressierung durch 30 Bit phys. Adresse, Start bei 0. 4 GB locked 3 GB paged kernel 2 GB user process ( ) paged 0 Speicherverwaltung
Virtueller Speicher: Windows NT • Verwaltung physikal. Seiten Page Frame Database PFD: Pro frame ein Eintrag Statusbits • Valid normal benutzt • Free frei • Zeroed frei+initialisiert (C2) • Standby noch verfügbar • Modified noch verfügbar + beschrieben • Bad phys. fehlerhaft Speicherverwaltung
Virtueller Speicher: Windows NT Seitenpool Zustandsübergänge der Seiten C2-Sicherheit Free Standby Modified In Use Speicherverwaltung
Virtueller Speicher: Windows NT • Struktur zur Verwaltung der Zustände der Seiten PM status Phys. Seiten VM status bits Tabelleneintrag Speicherverwaltung
Shared Memory – wozu, wie ¼ Daten virt.Seite 10 ¼ ¼ ¼ frei- Daten RAM-Seite Prozeß B geben virt. Seite 5 123 ¼ ¼ ¼ Prozeß A phys. Speicher Daten virt. Seite 2 ¼ Prozeß C • Globale Variablen(Prozeßkommunikation) • Gemeinsamer Puffer(Semaphor-geregelter Zugriff) • Gemeinsam genutzer Code(C-Bibliothek, ..) BS-geregelter Zugriff memory mapping Speicherverwaltung
Virtueller Speicher: Windows NT • Shared memory Organisation Erzeugen eines section-Objekts mit • Attribute: max. Größe, Schutz, paged ?, Adreßbeginn = ? • Methoden: • Erzeugen, • Öffnen, • Ausweiten, • Ausschnitt wählen, • Status r/w Speicherverwaltung
Virtueller Speicher: Windows NT Prototype PTE address Problem: shared virtual memory pages „normale“ Adressübersetzung Page frame address Prozeß-unabhängige Tafel Speicherverwaltung
Virtueller Speicher: Windows NT Verwaltung der Zustände der shared memory-Seiten Speicherverwaltung
Thrashing Speicherorganisation Virtueller Speicher Seitenersetzung Segmentierung, Caching Speicherverwaltung
Seitenersetzung page- fault-Aktionen des Betriebssystem • Auswahleiner alten Seite • Lesen der gesuchten Seite vom Massenspeicher • Überschreiben (Ersetzen) der alten Seite mit der gesuchten Seite • Aktualisierung der Seiten-Tabelle mit der neuen Seitenadresse • Aufsetzen des Prozeß-PC auf die Adresse des page-fault auslösenden Maschinenbefehls • Übergabe der Kontrolle an den Benutzerprozeß • Erneutes Abarbeiten der Adressreferenz Seitenauswahl – wie? Speicherverwaltung
Strategien zur Seitenersetzung Problem: Begrenzter Hauptspeicher. Welche alte Seite soll durch benötigte Seite ersetzt werden? (Scheduling für Seitenaustauschprozessor) Folge von benötigten Seiten = „Referenzfolge“ Optimale Strategie (Belady 1966) Ersetze die Seite, die am spätesten benutzt werdenwird Beispiel: 1 2 3 1 4 1 3 2 3 4 ... page fault-Interrupts Problem: Referenzfolge i.A. nicht bekannt. Speicherverwaltung
Strategien zur Seitenersetzung • FIFO-Strategie: Ersetze die älteste Seite Beispiel: 1 2 3 1 4 1 3 2 3 4 ... Speicherverwaltung
Strategien zur Seitenersetzung Neue Seite Älteste Seite Problem: Wenn älteste Seite ersetzt, immer zuerst die Hauptseite. Ansatz:Statistik notieren pro Seite Bits R= referencedReset durch Timer M= modifiedoder Ereignis • Second-Chance-Algorithmus: Überspringen einer Seite bei R = 1 • Der clock-Algorithmus Markierung im Ringpuffer „älteste Seite“ kreist, und zeigt auf auszulagernde Seite. (Effiziente Implementierung von secondchance) Speicherverwaltung
Strategien zur Seitenersetzung • Die LRU-Strategie(Least RecentlyUsed) Seite mit geringster Benutzung (größter Zeitdauer seit letztem Benutzen) zuerst ersetzen Beispiel: 1 2 3 1 4 1 3 2 3 4 ... Messen durch Shift des R-Bits in einer Zahl pro Seite: 8 Bit-Zahl ~ Aktualität pro Seite Speicherverwaltung
Strategien zur Seitenersetzung • Die NRU-Strategie(Not RecentlyUsed) Ersetze die Seite mit geringster Nutzung in einem gemeinsamen Zeitraum, etwa der Existenzzeit des Prozesses oder periodischer Resetzeit. Mit einer Prioritätslistegibt es bessere Statistik-Ausnutzung: 0) R = 0, M = 0 wenigste Nutzung zuerst ersetzen. Clock-Alg! 1) R = 0, M = 1 beschriebene Seite 2) R = 1, M = 0 genutzte Seite 3) R = 1, M = 1 genutzte beschriebene Seiten zuletzt ErsetzeSeite mit kleinster Nummer (2R+M) Problem: Geringe Differenzierung (Viele Seiten mit gleichem Status), nur 4 Benutzungsfrequenzen Speicherverwaltung
Strategien zur Seitenersetzung • Not FrequentlyUsed (NFU), Least FrequentlyUsed (LFU) Ersetze die Seite mit geringster Benutzungsanzahl bzw. -dauer in einer Zeitspanne. Dies entspricht der NRU, aber mit mehr möglichen Zuständen, also einem feiner abgestuften Verhalten. Problem: früher aktuelle Seiten dominieren zu lange, „träges“ Verhalten. Alterungsprozeß einführen! z.B. Linux: Einen Zähler pro Seite, bei jeder Referenz hochzählen, Dekrementieren (altern) durch Hintergrundprozeß Speicherverwaltung
Seitenmengen: Das working set Die Arbeitsmenge (workingset) eines Prozesses • Minimale Seitenzahl pro Prozessfenster (Denning 1980) Beispiel: Variable A,B,C,D sind auf verschiedenen Seiten MOVE A,B MOVE C,D Denning Working set = 5, unabhängig von evtl. zusätzlichen Seiten • Mittlere Seitenzahl pro Prozess • Methoden für workingset: • demandpaging: Einlagern von benötigten Seiten • prepaging: VorherigesEinlagern des workingset Prozessfenster Speicherverwaltung
Strategien zur Seitenersetzung Folge 1 2 3 1 4 1 3 2 3 RAM1 1 1 1 1 1 1 1 1 1 RAM2 - 2 2 2 4 4 2 RAM3 - - 3 3 3 3 3 3 3 t = 1 2 3 4 5 6 7 8 9 • Die Working Set-Strategie Seite außerhalb des workingset-Fensters zuerst ersetzen Fenster > Speichergröße Beispiel: 1 2 3 1 4 1 3 2 3 4 ... Voraussetzung: Lokalitätsprinzip! Speicherverwaltung
Frage • Bei der workingset-Strategie liegt eine Definition für „workingset“ zugrunde. Welche? • Minimale Seitenzahl pro Prozessfenster (Denning) • Mittlere Seitenzahl pro Prozess Speicherverwaltung
Seitenreferenzen: Lokalitätsprinzip Benutzte Seiten Ausführungszeitpunkte Einzelseiten sind zeitlich konstant! Speicherverwaltung
Modellierung und Analyse Optimale Seitenzahl pro Prozeß ? Beispiel FIFO 4 vs. 5 Seiten für Referenzfolge Beladys Anomalie: Mehr Ersetzungen trotz mehr Seiten! Speicherverwaltung
Modellierung und Analyse Beispiel LRU 4 Seiten vs. 5 Seiten Stack-Notation Zeit Genutzt vor Zeiteinheiten • LRU-Prioliste: Letzte genutzte Seite an den Anfang • LRU-Ersetzungsliste mittels Stack-Liste implementierbar unabhängig von der RAM/DISK-Grenze • Keine Anomalie für alle Stack-Algorithmen (LRU, LFU) beweisbar Speicherverwaltung
Modellierung und Analyse Ableitung von Verlust V(s) wird null sopt= Optimale Seitenlänge Hauptspeichergröße k gegeben. Opt.Seitengröße sopt ~ k ? • Sei einstufige Seitentabelle mit k/s Einträgen pro Prozeß ex. • Datenlänge ist aus ]0,s] mittl. Verschnitt s/2 mittl. SpeicherverlustV(s) = (s/2 + k/s) größ. Seiten kleinere Tabellen, aber mehr Verschnitt klein. Seiten größere Tabellen, aber weniger Verschnitt Optimum: (kurze Rechnung) Speicherverwaltung
Modellierung und Analyse Weitere Kriterien für optimale Seitengröße: • geringe zusätzl. Speicheranforderungen von stack oder heap: große Seiten haben hohen Verschnitt • die Zeit, um eine Seite auf den Massenspeicher zu schieben: kleinere Seiten haben rel. höh. I/O overhead • der Speicherverschnitt bei s > mittl. Dateigröße (1 KB ??) => nicht zu große Seiten! (aber: heutige mittl. Dateigröße?) Also: Kleine Seitengröße, große Transfermengen => I/O Clustermengen bilden, read ahead nutzen Speicherverwaltung