Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Speicher- verwaltung.

Ähnliche Präsentationen


Präsentation zum Thema: "Speicher- verwaltung."—  Präsentation transkript:

1 Speicher- verwaltung

2 Speicherorganisation
Virtueller Speicher Seitenersetzung Thrashing 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 FREI ... 1 1 1 1 1 1 1 1 5 ... 9 8 7 6 5 4 3 2 1 4 3 C 2 1 B Speicherbelegung Belegungstabelle Speicherverwaltung

5 Speicherorganisation
Zuordnung durch verzeigerte Listen FREI.len = 2 FREI.start = 5 9 8 A C.len = 3 C.start = 2 7 6 FREI 5 B.len = 2 B.start = 0 4 3 C Anfang 2 A.len = 3 A.start = 7 1 B Speicherbelegung Liste der Belegung 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. Verschmelzen mit jeweils dem Partnerstück bei gleichem Adressenanfang Das Buddy-System Speicherverwaltung

7 Speicherorganisation
Bewertung der Belegungsstrategien FirstFit > NextFit, WorstFit, BestFit ex. Kenntnisse über Speicheranforderungen: QuickFit Leistungsfähigkeit der buddy-Systeme: mittl. Anforderung = ? tats. Belegung Überschlagsrechnung ! FirstFit ist auch besser als BestFit, da dieses nur sehr kleine, kaum wiederbelegbare Reststücke übrig läßt. Bei Kenntnissen über Speicheranforderungen ist QuickFit und andere Algorithmen besser. Speicherverwaltung

8 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!) FirstFit ist auch besser als BestFit, da dieses nur sehr kleine, kaum wiederbelegbare Reststücke übrig läßt. Bei Kenntnissen über Speicheranforderungen ist QuickFit und andere Algorithmen besser. Speicherverwaltung

9 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

10 Speicherorganisation
Fragmentierung und Verschnitt Interner Verschnitt Interne Zersplitterung durch Heap-Belegung Abhilfe: garbage collector 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

11 Speicherorganisation
Virtueller Speicher Seitenersetzung Thrashing Segmentierung, Caching Speicherverwaltung

12 Virtueller Speicher - Wozu?
Probleme & Fixes Speicherzusatzbelegung von Programmen Unix: Prozeß auslagern, neuen Speicher reservieren, neu einlagern Externen Verschnitt zum Prozeß dazuschlagen (stack & heap) Relozierung von Programmcode rel. Adressen für GOTO bei allen CPU-Typen (!?) bei Einlagerung oder zur Laufzeit absolute Adr. errechnen Speicherschutz vor Programmen Betriebssystemkern darf nicht korrumpiert werden (fences,limits), spezielle HW-Einheit Programmiermodell soll klar, einfach und uniform sein (Fehlervermeidung) Speicherverwaltung

13 Virtueller Speicher Forderung: lineares Programmiermodell
Fragmente sollen zusammenhängend erscheinen Bei Speicheranforderung werden nur inaktive Programmteile ausgelagert Implementierung durch Memory Management Unit MMU Beliebig langer, Fragmentierter, durchgehender virt. Speicher endlicher, physikalischer Speicher ... 10000 9000 8FFF 8000 7FFF 0000 13000 C000 B8FF A900 A783 2784 Speicherverwaltung

14 Grundmodell virtueller Adreßkonversion
PageNr offset HSB LSB 1 6 Virtuelle Adresse Basisadresse 6 offset Physikal. Adresse 3 Bit Hauptspeicherbelegung ~ Page 7 Page 6 Seiten-rahmen Basisadr. ex. nicht: page fault interrupt !  Suchen und Einlagern der benötigten Seite Seitentabelle 7 Basisadresse 7 6 Basisadresse 6 5 Basisadresse 5 4 Basisadresse 4 3 Basisadresse 3 2 Basisadresse 2 1 Basisadresse 1 Basisadresse 0 Prozeßkontext Speicherverwaltung

15 Vorteil: kleiner Adreßraum,
Adreßkonversion Problem: virt. Adreßraum >> phys.Adreßraum Riesige Seitentabellen! Seitentabelle bei Seitengröß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

16 ~ ~ ~ ~ ~ ~ Adreßkonversion Multi-Level-Tabellen 001 01 offset Page 3
Linux: 10 Bit Bit Bit-Seite 001 01 offset Virtuelle Adresse Linux: MB Tabellen, 1 KB Tabelle jeweils 4KB GB Speicher 3 nicht existent ~ ~ 7 Tafeladresse 7 2 Seitenadresse5 6 nicht existent 1 Seitenadresse 1 5 nicht existent Seitenadresse 2 Page 3 4 nicht existent offset 3 nicht existent 3 nicht existent 2 nicht existent 2 Seitenadresse 6 ~ ~ 1 Tafeladresse 1 1 Seitenadresse 3 Tafeladresse 0 Seitenadresse 4 Nur 3 Seitentabellen2 statt 8 ! Unter Linux (i386) gibt es 64 Seitentabellen2 je 4kB (also der Länge einer Seite), die 4GB ansprechen können. Page 7 3 nicht existent ~ ~ 2 nicht existent Seitentabelle Prozeßkontext 1 nicht existent Seitenadresse7 page base table Seitentabellen Speicherbelegung (Seitentabelle1) Speicherverwaltung

17 Adreßkonversion: 3-Level Tabellen
SPARC-Architektur (SUN) Speicherverwaltung

18 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

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

20 Adreßkonversion Problem: Multi-Level-Tabellen sind langsam
SPARC: 3-stufig, MC stufig (80% länger) und benötigen Tabellenplatz für jeden Prozeß extra. Lösung: Invertierte Seitentabellen Nimm nur die erfolgreichen Zugriffe. Das Durchlaufen einer Multi-level-Tabelle verlangsamt den Speicherzyklus stark; für jede Stufe mind. einen Read-Hardwarezyklus. Für jeden Prozeß gibt es eigene Tabellen. Das Konzept der invertierten Seitentabellen vermeidet dies. Idee: Es gibt nur wenige physikal. Speicherseiten, aber sehr viele virtuelle. Invertieren wir die Auflistung, so reflektiert die Tabelle nur die Größe der tatsächl. Hauptspeichers. Dafür müssen wir bei jedem Zugriff die Tabelle durchsuchen und beachten, daß die selbe virt. Seite bei zwei verschiedenen Prozessen existieren können. Speicherverwaltung

21 Adreßkonversion Problem: Inverse Tabellen sind langsam
Durchsuchen der gesamten Tabelle Lösung: Assoziativer Tabellencache TLB Assoziativ- speicher Abfragewort ProcId virtuelle reelle Seite 1 2 3 5 7 X TLB = Translation Lookaside Buffer, ermöglicht meistens Cache-op; nur noch wenige langsame Multi-Level-Tabellen-Zugriffe nötig. ß Antwort Translation Lookaside Buffer TLB Speicherverwaltung

22 Assoziativspeicher Realisierung eines CAM Anfrage Hit
Ein Content Adressable Memory besteht aus einer Speichermatrix, die zusätzliche Gatter für logische Verknüpfungen enthält. Dies Gatter werden bei logischen Abfragen angesprochen und vergleichen jeweils den Zustand eines Bits auf der Abfrageleitung und in der Speicherzelle. Bei Übereinstimmung wird eine Signal auf die Trefferleitung gegeben. Speicherverwaltung

23 Virtueller Speicher: Unix
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) 4GB I/O map kernel 3GB shared libs 2GB user stack u_area heap data 1GB user program 0 GB code Speicherverwaltung

24 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: zentrale prototype page table Kernel mode Adressierung durch 30 Bit phys. Adresse, Start bei 0. 4 GB locked 3 GB paged kernel 2 GB user process ( ) paged Speicherverwaltung

25 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

26 Virtueller Speicher: Windows NT
Zustandsübergänge der Seiten C2-Sicherheit Free Seitenpool Modified Standby Grün: der durch page table entry PTE verwaltete Speicher In Use Speicherverwaltung

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

28 Shared Memory – wozu, wie
Globale Variablen (Prozeßkommunikation) Gemeinsamer Puffer (Semaphor-geregelter Zugriff) Gemeinsam genutzer Code (C-Bibliothek, ..)  BS-geregelter Zugriff memory mapping Daten virt. Seite 5 Prozeß A RAM-Seite 123 phys. Speicher virt.Seite 10 Prozeß B virt. Seite 2 Prozeß C frei- geben Speicherverwaltung

29 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

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

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

32 Speicherorganisation
Virtueller Speicher Seitenersetzung Thrashing Segmentierung, Caching Speicherverwaltung

33 Seitenersetzung page- fault-Aktionen des Betriebssystem
Auswahl einer 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

34 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 werden wird Beispiel: page fault-Interrupts Das Beispiel zeigt einen Hauptspeicher aus drei Seiten. Die oberste Zeile ist die Anforderung (Referenzfolge). Im Beispiel wird Seite 2 nach 0 und 1 benötigt, so dass sie ausgelagert wird, entsprechend auch die anderen Seiten. Speicherverwaltung

35 Strategien zur Seitenersetzung
Problem: Referenzfolge i.A. nicht bekannt. Ansatz: Statistik notieren pro Seite Bits R= referenced Reset durch Timer oder Ereignis M= modified FIFO-Strategien: Ersetze die älteste Seite nur älteste Seite ersetzen: Problem mit Hauptseite Beispiel: Wenn Bit R periodisch zurückgesetzt wird, so ist Bit R=1 eine Benutzungsfrequenz. Die FIFO-Schlange der Seiten läßt sich zu einem Ringpuffer schließen; die Ersetzung der ältesten Seite kann durch R=1 verhindert werden. Durch die FIFO-Logik sind 4 zusätzliche Einlagerungen nötig. Speicherverwaltung

36 Strategien zur Seitenersetzung
Der clock-Algorithmus Markierung im Ringpuffer „älteste Seite“ kreist und zeigt auf auszulagernde Seite Überspringen einer Seite bei R = 1 (Second-Chance-Algorithmus) Älteste Seite Neue Speicherverwaltung

37 Strategien zur Seitenersetzung
Die NRU-Strategie (Not Recently Used) Ersetze die Seite mit geringster Nutzung in einem gemeinsamen Zeitraum Mit Prioritätsliste bessere Statistik-Ausnutzung: 1) R = 0, M = 0 wenigste Nutzung zuerst ersetzen Clock-Alg! 2) R = 0, M = 1 beschriebene Seite 3) R = 1, M = 0 genutzte Seite 4) R = 1, M = 1 genutzte beschriebene Seiten zuletzt Ersetze Seite mit kleinster Nummer (2R+M) Problem: Geringe Differenzierung (Seiten mit gleichem Status) Not Frequently Used (NFU), Least Frequently Used (LFU) Ersetze die Seite mit geringster Benutzungsfrequenz bzw. -dauer in einer Zeitspanne, z.B. Existenzzeit des Prozesses Problem: früher aktuelle Seiten dominieren zu lange, „träges“ Verhalten  Alterungsprozeß einführen! Linux: Einen Zähler pro Seite, bei jeder Referenz hochzählen, Dekrementieren durch Hintergrundsprozeß Speicherverwaltung

38 Strategien zur Seitenersetzung
Die LRU-Strategie (Least Recently Used) Seite mit kleinster Benutzungswahrscheinlichkeit (längste Zeitspanne seit letzter Benutzung) zuerst ersetzen Beispiel: Zählen durch Schieberegister: 8 Bit-Zahl ~ Aktualität Man beachte: Der Mechanismus des Schieberegisters bildet die Häufigkeit einer Seite nicht genau ab. Beispiel: Seite B ist an Zeitpkt -3,-4,-5,-6,-7,-8 nicht benutzt worden. Trotzdem ist ihre die Zahl größer als bei Seite A. Speicherverwaltung

39 Seitenmengen: Das working set
Arbeitsmenge (working set) 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: demand paging: Einlagern von benötigten Seiten prepaging: Vorheriges Einlagern des working set Prozessfenster Voraussetzung: Lokalitätsprinzip! Speicherverwaltung

40 Seitenreferenzen: Lokalitätsprinzip
Benutzte Seiten Ausführungszeitpunkte Gezeigt sind als Schwärzung die relativen Adressen bzw. Nummern der benutzten Seiten bei einem Job zu einem Zeitpunkt bzw. Zeitfenster. Man sieht, dass zu einem Zeitpunkt nicht alle Seiten benutzt werden, sondern nur ein kleiner Teil. Sowohl die benutzten Adressen als auch die Seiten sind lokal benachbart Einzelseiten sind zeitlich konstant! Speicherverwaltung

41 Strategien zur Seitenersetzung
Die Working Set-Strategie Seite außerhalb des working set-Fensters zuerst ersetzen Fenster > Speichergröße Beispiel: Folge 1 2 3 4 RAM1 RAM2 - RAM3 t = 5 6 7 8 9 Die Working set-Strategie unterscheidet sich von der LRU-Strategie dadurch, daß die Nutzung nur notiert wird, um die Seiten im Fenster festzulegen. Alle Seiten außerhalb des Fensters werden gleich behandelt. Speicherverwaltung

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

43 Modellierung und Analyse
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. Speicherverlust V(s) = (s/2 + k/s) größ. Seiten  kleinere Tabellen, aber mehr Verschnitt klein. Seiten  größere Tabellen, aber weniger Verschnitt Optimum: (kurze Rechnung) Ableitung von Verlust V(s) wird null    sopt= Speicherverwaltung

44 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

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

46 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 Der LFU-Algorithmus wird hier in Stack-Notation dargestellt: Die RAM-Seiten sind zu jedem Zeitpunkt so angeordnet, daß die zuletzt benutzten Seiten oben stehen, mit jedem Zeittakt verschieben sie sich nach unten (Stack). Bei Gebrauch werden sie wieder nach oben gesetzt. Speicherverwaltung

47 Speicherorganisation
Virtueller Speicher Seitenersetzung Thrashing Segmentierung, Caching Speicherverwaltung

48 thrashing Keine Verzögerung: tS > tw > thrashing: tS < tw
Beobachtung: Bei sehr vielen Prozessen läuft plötzlich das Gesamtsystem langsamer, stattdessen starke Plattenaktivität Erklärung: Wartezeiten kehren sich um CPU  PPU n Prozesse, jeder mit k < m Seiten Keine Verzögerung: tS > tw > t S W Prozeß 1 Prozeß 2 Prozeß 3 t W S Prozeß 1 Prozeß 2 Prozeß 3 thrashing: tS < tw > Speicherverwaltung

49 Analyse von thrashing 1 i m Seitenindex i Modellierung p
Anordnung der Seiten nach Referenzhäufigkeit. Referenzwahrscheinlichkeit pi der Seite i: p i p(i) beobachtet Modell menge M (Working set) 1 p 1 Mittl. p(i) p c Natürlich ist Summe(pi)=1 Modell menge M 2 (ausgelagerte Seiten) p 2 1 i m Seitenindex i M Speicherverwaltung

50 Analyse von thrashing Rechnung
Seitenaustauschgrad  = Funktion (Speicherangebot ) 1() = 2() = Speicherverwaltung

51 Analyse von thrashing r r Seitenaustauschgrad r alle Seiten gleich wah
Visualisierung Abhängigkeit Seitenaustauschgrad vom Speicherangebot r Seitenaustauschgrad alle Seiten gleich wah r scheinlich 1 Reduzierung von M im M o dell r 1 1 r Reduzierung von r 2 M +M im Modell T 1 2 sT 1 rel. Speicherangebot s beobachtet Speicherverwaltung

52 Analyse von thrashing Rechnung Normalbetrieb vs. thrashing
Beispiele rel. Bearbeitungsdauer G(n) Fälle W > T W < T Speicherverwaltung

53 Analyse von thrashing Systemverhalten bei rT > rW also sT < sW
(A) Linearer Bereich (B) Thrashing - Bereich i/o zu langsam Beispielrechnung Nichtlineare Auslastung bei geringem Seitenwechsel 12 10 G B 8 Gesamtbearbeitungsdauer 6 4 2 G A 1 2 3 4 n 5 n Prozeßzahl Systemverhalten bei rT > rW also sT < sW (C) Linearer Bereich (D) Thrashing - Bereich (E) Starkes Thrashing working set zu gross Beispielrechnung Nichtlineare Auslastung bei hohem Seitenwechsel 20 18 16 Diese Rechnungen sollen an der Tafel ausgeführt werden 14 G E 12 10 8 6 G D 4 2 G C 1 2 3 4 n 5 n Speicherverwaltung

54 Anti-Thrashing Strategien
Speicherangebot muß genügen für working set bei gegebenem Verhältnis w= Seitenverweilzeit tS Seitenwechseldauer tT Hardwaremaßnahmen Große Seiten  großes tS (Festplattenverzögerung!), mehrere parallele swap-Festplatten  kleineres tT Programmierungsmaßnahmen lokaler code (inline), lokale Adressreferenzen , (z.B. Matrizenmultiplikation)  kleines T (nötige Seitenzahl) Working Set-Modell nur so viele Prozesse, wie Speicher für alle working sets fester Größe reicht (z.B. Siemens:BS2000, IBM:CP67) Page Fault Frequency-Modell PFF Wenn Seitenersetzungen pro Zeiteinheit (Seitentauschrate) > Schwelle, Prozesse stillegen. < Schwelle, Prozesse aktivieren. (Dynamische Strategie: etwas besser als die statische working-set-Strategie) Speicherverwaltung

55 Anti-Thrashing Strategien
Das Nutzungsgradmodell L(n,t) = w1CPU + w2PPU Nutzungsgrad Adaptive Regelung der Auslastungen  Messe L(n,t) und entscheide: Abfallen von L(.)  aktiviere Prozesse Ansteigen von L(.)  deaktiviere Prozesse Speicherverwaltung

56 Anti-Thrashing Strategien
Globale vs. lokale Strategien Initiale Speicheraufteilung je nach Prozessgröße, lokale Seitenersetzungsstrategie. Strategien (LRU, ...) nicht isoliert pro Prozess, sondern global für alle Seiten aller Prozesse (z.B. PFF gleich für alle Prozesse). Nachteil: Als „nicht gerecht“ empfunden Lazy evaluation Vermeide unnötigen Seitentausch Copy On Write Seitenkopie erst durchführen, wenn darauf geschrieben wird Page Out Pool Auszulagernde Seiten zwischen-speichern (standby) Speicherverwaltung

57 Windows NT: page out pool
Zustandsübergänge der Seiten Free Seitenpool Modified Standby In Use Speicherverwaltung

58 Andere Seitenprobleme
Aufsetzen: Page faults und Instruktionsgrenzen Bei Seitenfehler: Wiederholung des Befehls. Aber wo fing er an? Rekonstruktionszeit nötig bei Microcode. Verbotene Auslagerung: I/O Pages und Shared Pages DMA für ausgelagerte Prozesse: Fehler! Gemeinsame Bibliotheken, shared memory: Probleme beim Auslagern! Verstreute Optimierungsmethoden: Paging Demon Kapselung als idle-Prozeß, z.B. für page out pool Speicherverwaltung

59 Unix: Seitenersetzungsstrategien
HP-UX: Swapping vs. Paging Swapping: schneller Zugriff, z.B. für Prozeßauslagerung z.B. extra swap disk, swap section einer Platte, swap directory im Dateisystem Hintergrundprozesse Pageout demon desfree < freierSpeicher < 25% des Anwenderspeichers: periodischer reset des R-Bits, t warten, Auslagern der Seiten mit R=0 swapper demon freierSpeicher < desfree: swapper demon desaktiviert Prozesse + sweep out, bis Min. erreicht. Min,Max für Hysterese gegen „Seitenflattern“ Speicherverwaltung

60 Windows NT: Seitenersetzungsstrategien
FIFO-Seitenersetzung im Normalfall Keine globale Seitenabstimmung der Prozesse, da lokales Seitenmanagement pro Prozeß subjektiv gerechter Wenig aufwendig Auslagerung häufig benutzter Seiten gemildert durch page out pool Automatic workset trimming zu wenig Speicher da Alle Prozesse mit aktueller Seitenzahl (working set) >min verkleinern Bei Seitenfehlern wird working set „geclustert“ vergrößert (größere effektive Seitenlänge!) Automatic Copy on write unnötiges Kopieren verhindern Neue Prozesse (POSIX): copy on write für Daten-Seiten verhindert Kopieren von Elternseiten für Kinder (z.B. Code+Daten) Dynamic Link Library DLL nur bei write für Daten kopiert, sonst nicht. Speicherverwaltung

61 Speicherorganisation
Virtueller Speicher Seitenersetzung Thrashing Segmentierung, Caching Speicherverwaltung

62 Segmentverwaltung Problem Speicherfragmentierung ?
Segmentregister: Seitentabelle Segmenttabelle Beispiel: Intel 80286 Speicher CPU/MMU SegmentRegister Daten B Code B DatenBlock 1 DatenBlock 2 Daten A Code A Stack DS Daten CS Code ES Extended-Daten SS Stack Speicherverwaltung

63 Segmentierung Segmente statt globalem linearem Adressraum
Problem: Kollision der Adreßräume bei wachsenden Datenstrukturen UNIX-Segmente Oberer Speicher (Heap) Daten Programm Laufzeitsystem Stack Argumente/ Optionen Compiler-Segmente Symboltabellen Quelltext Tabellen Parser- Baumstrukturen Stack Speicherverwaltung

64 Segementverwaltung Lokale und globale Seitentabellen INTEL 80486 CPU
Pro Prozeß: Local Description Table LDT Alle Prozesse: Global Description Table GDT Prozeß B Prozeß A LDT Code Code LDT Segment Segment CPU Daten Daten LDT-Register Segment Segment GDT-Register Globale Segmente GDT Code Daten Segment Segment Code Segment Speicherverwaltung

65 Cache Beispiel: AMD Opteron 64 Bit, L1 und L2 Cache Speicherverwaltung

66 Cache Schneller Speicherzugriff durch schnellen Hilfsspeicher (Cache) bei Lokalitätseigenschaft Pipeline-burst-Cache Befehls/Daten-Cache Speicherverwaltung

67 Cache Lösungen Konsistenzproblem Alte Daten Neue Daten
Adresse Read Daten Write Prozessor CACHE Speicher DRAM Ein-/ Ausgabe- einheiten DMA Lösungen CPU schreibt zurück write through Cache schreibt zurück write back Aktualisieren copy back mittels snooper bei M=1 Beispiel: Intel MESI Statuswort pro Cachezelle, parallele Cache-Validierung durch alle snooper Speicherverwaltung

68 Speicherschutz Virt.Speicher: keine Adressiermöglichkeit des Nachbarn
Zugriffsrechte bei jeder Seite bzw. Segment (UNIX, NT) VM Manager (Windows NT) Execute only Gemeinsame Bibliotheken Guard Page Bei Benutzung Signalerzeugung guard page exception No Access bei nichtex. oder gesperrten Seiten: Debuggingsignal Copy on Write Speicherschutz: Bei Zugriff nur Schreiben auf Kopie Speicherverwaltung

69 direkter phys. Speicherzugriff, keine MMU
Speicherschutz CPU-Sicherheitsstufen kernel mode vs. user mode z.B. Intel 80386: real mode  virtual mode Real mode direkter phys. Speicherzugriff, keine MMU Virtual mode nicht rücksetzbar Stufe 3: User Stufe 2: shared libs Stufe 1: system calls Stufe 0: Kernel („Ring0-Mode“) Zugriff und Sprünge nur auf Seiten mit größerer/gleicher Statuszahl, kontrollierter Aufruf von kleinerem Status. Speicherverwaltung


Herunterladen ppt "Speicher- verwaltung."

Ähnliche Präsentationen


Google-Anzeigen