1 / 68

Speicher- verwaltung

Speicher- verwaltung. Thrashing. Speicherorganisation. Virtueller Speicher. Seitenersetzung. Segmentierung, Caching. Speicherverwaltung :. Einteilung Anwenderprogramme interner Speicher: garbage collector Hauptspeicher Aufteilung auf Prozesse: globaler vs. Lokaler Speicher

yamin
Download Presentation

Speicher- verwaltung

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Speicher- verwaltung

  2. Thrashing Speicherorganisation Virtueller Speicher Seitenersetzung Segmentierung, Caching Speicherverwaltung

  3. 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

  4. 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

  5. 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

  6. 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

  7. Speicherorganisation; Buddy-System • Beispiel Anforderung: 3 Einheiten • Zugeteilt: 4 = 22Einheiten 0xx x x x 0 x x Speicherverwaltung

  8. 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

  9. 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

  10. Speicherorganisation Bewertung der Belegungsstrategien • FirstFit>NextFit, WorstFit, BestFit • ex. Kenntnisse über Speicheranforderungen: QuickFit • Leistungsfähigkeit der buddy-Systeme: mittl. Anforderung = ? tats. Belegung Überschlagsrechnung! Speicherverwaltung

  11. 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

  12. 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

  13. 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

  14. Thrashing Speicherorganisation Virtueller Speicher Seitenersetzung Segmentierung, Caching Speicherverwaltung

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. Adreßkonversion: 3-Level Tabellen SPARC-Architektur (SUN) 0 0 0 0 Speicherverwaltung

  21. 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

  22. Adreßkonversion: 4-Level-Tabellen MC 68030 Motorola Problem: 4 von 5 Speicherzugriffen sind overhead Speicherverwaltung

  23. 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

  24. 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

  25. Assoziativspeicher • Realisierung eines CAM Anfrage Hit Speicherverwaltung

  26. 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

  27. 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

  28. 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

  29. Virtueller Speicher: Windows NT Seitenpool Zustandsübergänge der Seiten C2-Sicherheit Free Standby Modified In Use Speicherverwaltung

  30. Virtueller Speicher: Windows NT • Struktur zur Verwaltung der Zustände der Seiten PM status Phys. Seiten VM status bits Tabelleneintrag Speicherverwaltung

  31. 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

  32. 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

  33. Virtueller Speicher: Windows NT Prototype PTE address Problem: shared virtual memory pages „normale“ Adressübersetzung Page frame address Prozeß-unabhängige Tafel Speicherverwaltung

  34. Virtueller Speicher: Windows NT Verwaltung der Zustände der shared memory-Seiten Speicherverwaltung

  35. Thrashing Speicherorganisation Virtueller Speicher Seitenersetzung Segmentierung, Caching Speicherverwaltung

  36. 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

  37. 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

  38. Strategien zur Seitenersetzung • FIFO-Strategie: Ersetze die älteste Seite Beispiel: 1 2 3 1 4 1 3 2 3 4 ... Speicherverwaltung

  39. 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

  40. 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

  41. 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

  42. 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

  43. 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

  44. 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

  45. Frage • Bei der workingset-Strategie liegt eine Definition für „workingset“ zugrunde. Welche? • Minimale Seitenzahl pro Prozessfenster (Denning) • Mittlere Seitenzahl pro Prozess Speicherverwaltung

  46. Seitenreferenzen: Lokalitätsprinzip Benutzte Seiten Ausführungszeitpunkte Einzelseiten sind zeitlich konstant! Speicherverwaltung

  47. Modellierung und Analyse Optimale Seitenzahl pro Prozeß ? Beispiel FIFO 4 vs. 5 Seiten für Referenzfolge Beladys Anomalie: Mehr Ersetzungen trotz mehr Seiten! Speicherverwaltung

  48. 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

  49. 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

  50. 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

More Related