Kap. 4 Speicher- verwaltung Version vom 15.06.2007.

Slides:



Advertisements
Ähnliche Präsentationen
Seitentauschstrategien in Theorie und Praxis für den Zentralspeicher
Advertisements

Kap. 7 Sortierverfahren Kap. 7.0 Darstellung, Vorüberlegungen
4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
5.5 Virtueller Speicher Wenn der reale Speicher sogar für einzelne Prozesse zu klein ist : Virtueller Speicher (virtual memory),  ist „beliebig“ groß,
SAP R/3 - Speichermanagement
Kapitel 8 Speicherverwaltung
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Rechneraufbau & Rechnerstrukturen, Folie 10.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 10.
Vorlesung: Betriebssysteme © 2002 Prof. Dr. G. Hellberg 1 Studiengang Informatik FHDW Vorlesung Betriebssysteme 1. Quartal 2002.
1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.
Vorlesung 4: Memory Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Technische Informatik II Wintersemester 2002/03
Open Source Prozessor Leon2 Peer Royla und Marco Siebert RST-Labor WS 04/05 Prof. Dr.-Ing. Thomas Risse.
EPIC, IA-64 und Itanium Eine Kurzpräsentation von Jan Hübbers bei Prof. Dr.-Ing. Risse im Fach Labor Rechnerstrukturen an der Hochschule Bremen
Matrix Multiplication on CUDA
Speicherverwaltung durch Swapping
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Java Garbage Collection Angelika Kusel, Überblick Was ist Garbage Collection? Vor- und Nachteile von GC GC-Algorithmen/Verfahren Java Garbage.
Speicher- verwaltung.
Schicht 0 Nr I Schicht 3 Nr III Schicht 6 Nr V Schicht 13 Nr VIII Schicht 10 Nr VII Schicht 10 Nr VI Schicht 6 Nr IV Schicht 3 Nr II Schicht 14 Nr IX Schicht.
Grundschema zur Medienanalyse Vereinbarte Codes
Computerorientierte Physik VORLESUNG
Grundlagen der Informatik - Prof. Slany 1 Grundlagen der Informatik Prof. Wolfgang SLANY.
Bs Gemeinsame Datensegmente am Beispiel Solaris [Beachte: Unix/Linux setzen keine Hardware-Segmentierung voraus und sprechen daher statt von.
Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und From-Space Nutzung eines Teiles durch das Programm Ist.
Speicher- verwaltung.
ADAT©2004 Dipl. - Ing. Walter SabinSeite: 19 Version 1.0a Programme - Zusatzsoftware Oracle: –Forms –Reports –Designer –Jdeveloper –APEX (Application Express)
Studiengang Informatik FHDW
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
Gruppe 2 MEMORY MANAGEMENT Jakob Dietschy Arnold Huber
Clustering Clustering mit openMosix von Christian Wiese Stefan Krause.
KA – Rechnerarchitektur II ____________________________________________________________________________________________ ____________________________________________________________________________________________.
Jakob Dietschy Arnold Huber Karl Philip Schneider Lukas Unterberger Daniel Dötzl Gruppe 2 MEMORY MANAGEMENT.
6.2 Repräsentation auf Platten
Bs Der Speicherverwalter Speicherverwalter (memory manager) = im einfachsten Fall ein Systemprozess, der für die Umlagerung der Seiten (page.
Bs Segmentierte Prozesse im virtuellen Speicher Zur Erinnerung:  Virtueller Speicher ermöglicht effiziente und komfortable Nutzung des realen.
Bs Segmentierung Adressraum besteht aus mehreren Segmenten (segments), die unabhängig voneinander manipulierbar sind. Segmentierungsstruktur ist.
IIS The microsoft way. © Windows NT Option pack optionale Server Komponenten IIS (Internet Information Server) Webserver von Microsoft.
Webdeployment auf Cluster Seminarvortrag von Lukas Bonzelett.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
NetApp Alliance ProLion CEO Robert Graf
Computerbenutzung und Dateimanagement
Anforderungen an die neue Datenstruktur
SAP – Installation auf Windows Server 2008 R2 Enterprise
Allgemeine Informatik Seminar 1
Seminar im Fach Geoinformation IV
SurveyCAU Handbuch - Studierende-.
Töne, Akkorde und Tonleitern
Das Problem des Handlungsreisenden
KI in Computerspielen Tactical and Strategic AI
Komponenten des Computers
Technische Informatik II
Hardware.
Vom HW-Automaten zum Prozessor
Herzlich Willkommen Präsentation für das Angebot «einfache Verlinkung»
Routing … … die Suche nach dem Weg..
Herzlich willkommen zum Tutorial:
Studiengang Informatik FHDW
Kap. 12 R-Bäume GB B31 B245 Box 1: Box 2: Box 3: Box 4: Box 5:
Einführung Definitionen
Datenstrukturen und Softwareentwicklung
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
Einführung Definitionen
DB2 – SS 2019 von Baum allgemein bis B*-Baum
DB2 – SS 2019 von Baum allgemein bis B*-Baum
RGB-LED Projekt INGOLSTADT.
 Präsentation transkript:

Kap. 4 Speicher- verwaltung Version vom 15.06.2007

Direkte Speicherbelegung Logische Adressierung und virtueller Speicher Kap. 4 - Inhalt Übersicht Direkte Speicherbelegung Logische Adressierung und virtueller Speicher Seitenverwaltung Segmentierung Cache Speicherschutz Speicherverwaltung

Speicher ist neben dem Prozessor das wichtigste Betriebsmittel Übersicht I Speicher ist neben dem Prozessor das wichtigste Betriebsmittel Speicherhierarchie Speicherverwaltung

Typische Speicherhierarchie mit Zahlen Übersicht II Typische Speicherhierarchie mit Zahlen Zahlen sind sehr grobe Schätzungen < 1KB 1 MB 128MB – 8GB 20-250GB 20-100GB Speicherverwaltung

interner Speicher: z.B. Verwaltung des Heaps durch garbage collector Übersicht III Einteilung Anwenderprogramme interner Speicher: z.B. Verwaltung des Heaps durch garbage collector Hauptspeicher Aufteilung auf Prozesse: globaler vs. lokaler Speicher bei Multiprozessorsystemen Massenspeicher internes Management bei Dateien, z.B. der Swapdatei Strategien Komplette Speicherbelegung (Prozeß) auslagern (swapping: langsam) Speicherteile (Prozeßteile) auslagern Speicherverwaltung

Direkte Speicherbelegung I Einfache Speicherbelegung Ein Benutzerprogramm ohne Swapping oder Paging Speicherverwaltung

Direkte Speicherbelegung II Multiprogramming mit festen Partitionen Speicherverwaltung

Direkte Speicherbelegung III Degree of multiprogramming CPU Benutzung als Funktion der Zahl der Prozesse im Speicher Speicherverwaltung

Direkte Speicherbelegung IV Zuordnung durch feste Tabellen Tabelleneinheit (z.B. 1Bit) gibt Zustand einer Speichereinheit (z.B. 32Bit-Wort oder 4KB-Einheit, ...) 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

Direkte Speicherbelegung V Zuordnung durch verzeigerte Listen FREI.len=2 FREI.start=5 9 8 A C.len=3 7 C.start=2 6 FREI 5 B.len=2 4 B.start=0 3 C Anfang 2 A.len=3 1 B A.start=7 Speicherbelegung Belegungsliste Speicherverwaltung

Direkte Speicherbelegung VI - Belegungsstrategien Unabhängig von der Art der Verwaltung der Speicherbelegungslisten gibt es verschiedene Strategien, um aus der Menge der unbelegten Speicherblöcke den geeignetsten heraus-zusuchen. Ziele: Anzahl der freien Bereich minimieren Größe der freien Bereiche maximieren Speicherverwaltung

Direkte Speicherbelegung VII - 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 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

Direkte Speicherbelegung VI - Bewertung Bewertung der Belegungsstrategien FirstFit > NextFit, WorstFit, BestFit Kenntnisse über Speicheranforderungen: QuickFit 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

Direkte Speicherbelegung VII - Fragmentierung Fragmentierung und Verschnitt Interner Verschnitt Interne Zersplitterung durch Heap-Belegung Abhilfe: garbage collector des Programmiersystems Externer Verschnitt Freier Platz zwischen den Programmen im Auslagerungsbereich Abhilfe: zuerst Einlagern großer Prozesse, dann Auffüllen mit kleinen.  swapping kleiner Programme (gegen SJF-Strategie!) Oder: Speicheraufteilung in verschieden große Bereiche, jede mit eigener Warteschlange (IBM OS/MFT): ineffizient! Speicherverwaltung

Direkte Speicherbelegung VIII - Swapping Speicherallokation ändert sich, wenn Prozesse in den Speicher eingelagert werden den Speicher verlassen Schattierte Flächen sind ungenutzter Speicher Speicherverwaltung

Direkte Speicherbelegung IX - Swapping Platz für wachsendes Datensegment allokieren Platz für wachsendes Stack- und Datensegment allokieren Speicherverwaltung

Virtueller Speicher I - Wozu? Probleme & Einzellösungen Speicherzusatzbelegung 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 Betriebssystemkern darf nicht korrumpiert werden (fences,limits), spezielle HW-Einheit Programmiermodell soll klar, einfach und uniform sein Speicherverwaltung

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

Virtueller Speicher III – Funktion und Position der MMU Speicherverwaltung

Virtueller Speicher IV - Wichtige Begriffe Seiten: Adreßraum ist in Einheiten gleicher Größe (sog. Seiten) aufgeteilt Seitenrahmen: physischer Speicher ist in Einheiten gleicher Größe (sog. Seitenrahmen oder Seitenkacheln) aufgeteilt Seitentabellen: verwalten Zuordung zwischen Seiten und Seitenrahmen Segmente: ähnlich wie Seiten, nur ungleich groß Segmenttabellen: ähnlich wie Seitentabellen, mit Größeninformation Speicherverwaltung

Seitenverwaltung I - Seitentabellen Relation zwischen virtuellen Adressen und physischen Speicheradressen wird durch die Seitentabelle beschrieben Speicherverwaltung

Seitenverwaltung II - Grundmodell virt. Adreßkonversion Virtuelle Adresse PageNr 6 offset 1 LSB HSB Basisadresse 6 offset Physikal. Adre s se ~ ~ 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 ~ Basisadresse 0 ~ Seitentabelle Hauptspeicherbelegung Speicherverwaltung

Seitenverwaltung III - Adreßkonversion Problem: virt. Adreßraum >> phys.Adreßraum Riesige Seitentabellen! Sei Seitengröße=offset=12 Bit  4KB Seitenrahmen (page frame) 16 Bit: 4 Bit  16 Einträge 32 Bit: 20 Bit  1 Mill. Einträge 64 Bit: 52 Bit  4 1015 Einträge Adreßbegrenzung kleiner Adreßraum, z.B. 30 Bit (1 GB)  18 Bit  256 KB Tabelle Aber: Vergeudung von Platz, da meist nicht benötigt ! Speicherverwaltung

Seitenverwaltung IV - Adreßkonversion Multi-Level-Tabellen 001 01 offset Virtuelle Adresse Prozeßkontext Seitentabelle 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 Page 7 3 nicht existent ~ ~ 2 nicht existent 1 nicht existent Seitenadresse7 page base table Seitentabellen 2 Speicherbelegung (Seitentabelle1) Speicherverwaltung

Seitenverwaltung V – Adreßkonv.: 3-Level Tabellen SPARC-Architektur (SUN) Speicherverwaltung

Seitenverwaltung VI – Adreßkonv.: 4-Level-Tabellen MC 68030 Motorola Problem: 4 von 5 Speicherzugriffen sind overhead Speicherverwaltung

Seitenverwaltung VII - 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 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

Seitenverwaltung VIII - Adreßkonversion Problem: Inverse Tabellen sind langsam Durchsuchen der gesamten Tabelle Lösung. Assoziativer Tabellencache ProcId virtuelle reelle Seite 1 Assoziativ- 1 1 1 1 1 2 speicher 1 1 1 3 1 5 X 1 1 7 ­ ­ ­ ­ ­ ­ ß Abfragewort 1 5 Antwort Speicherverwaltung

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

Seitenverwaltung X - Unix HP-UX: 32 Bit + 16/32 Bit space register 4 Segmente (Quadranten) unterschiedl. Funktionalität Memory-mapped devices (kernel mode) 4GB I/O map shared memory 3GB libs mem- mapped files 2GB user stack u_area heap data 1GB user program 0 GB code I II III IV Speicherverwaltung

Seitenverwaltung XI - Windows NT Win2000: 32 Bit 64 Bit vorgesehen 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 4 GB locked 3 GB paged kernel 2 GB user process ( ) paged Speicherverwaltung

Seitenverwaltung XII - 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: 0 1 2 3 4 0 1 5 6 0 1 2 3 4 ... Ziel 1 2 3 4 5 6 RAM1 RAM2 - 1 RAM3 2 ƒ „ 4 … † 6 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 daß sie ausgelagert wird, entsprechend auch die anderen Seiten. t = 1 2 3 4 5 6 7 8 9 10 11 Speicherverwaltung

Seitenverwaltung XIII - 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 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

Seitenverwaltung XIV - Strategien zur Seitenersetzung Der clock-Algorithmus Markierung im Ringpuffer „letzte Seite“ kreist Überspringen einer Seite bei R=1 (Second-Chance-Algorithmus) Neue Seite Älteste Seite Speicherverwaltung

Seitenverwaltung XV - 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 wenig 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 Zeitspanne = 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

Seitenverwaltung XVI - Strategien zur Seitenersetzung Die LRU-Strategie (Least Recently Used) Seite mit kleinster Benutzungswahrscheinlichkeit (längste Zeitspanne seit letzter Benutzung) zuerst ersetzen Zählen durch Schieberegister: 8 Bit-Zahl ~ Aktualität Speicherverwaltung

Seitenverwaltung XVII - Seitenmengen: Das working set Arbeitsmenge (working set) eines Prozesses Minimale Seitenzahl pro Prozeßfenster (Denning 1980) Mittlere Seitenzahl pro Prozeß 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 Lokalitätsprinzip! Einlagern von nötigen Seiten: demand paging Einlagern des working set: prepaging Speicherverwaltung

Seitenverwaltung XVIII - 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, daß zu einem Zeitpunkt nicht alle Seiten benutzt werden, sondern nur ein kleiner Teil. Sowohl die benutzten Adressen als auch die Seiten sind lokal benachbart Speicherverwaltung

Seitenverwaltung XIX - Strategien zur Seitenersetzung Die Working Set-Strategie Seite außerhalb des working set-Fensters zuerst ersetzen Fenster > Speichergröße 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

Seitenverwaltung XX - Modellierung und Analyse Optimale Seitenlänge Hauptspeichergröße k, SW-Seitengröße s Einstufige Seitentabelle mit k/s Einträgen pro Prozeß Datenlänge ist aus ]0,s]  mittl. Verschnitt s/2 mittl. Speicherverlust V = (s/2 + k/s)  k fv größ. Seiten  kleinere Tabellen, mehr Verschnitt klein. Seiten  größere Tabellen, weniger Verschnitt Optimum: Ableitung von V(s) wird null    sopt= und Verlustfaktor fv = 2/sopt Speicherverwaltung

Seitenverwaltung XXI - Modellierung und Analyse Weitere Kriterien für optimale Seitengröße große Seiten haben hohen Verschnitt bei geringen zusätzl. Speicheranforderungen (höh. Mittl. Verschnitt) Zeit, um eine Seite auf den Massenspeicher zu schieben: kleinere Seiten sind schneller geschrieben, aber langsamer gefunden Speicherverschnitt bei mittl. Dateigröße von 1 kB => nicht zu große Seiten! Kleine Seitengröße, große Transfermengen => I/O Clustermengen, read ahead Speicherverwaltung

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

Seitenverwaltung XXIII - Modellierung und Analyse Beispiel LFU 4 Seiten vs. 5 Seiten Stack-Notation Zeit Häufigkeit LFU-Liste mittels Stack-Liste implementierbar unabhängig von der RAM/DISK-Grenze Keine Anomalie  für alle Stack-Algorithmen 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

Seitenverwaltung XXIV - thrashing 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 m<k Seiten Keine Verzögerung > t S W Prozeß 1 Prozeß 2 Prozeß 3 t W S Prozeß 1 Prozeß 2 Prozeß 3 thrashing: > Speicherverwaltung

Seitenverwaltung XXV - Analyse von thrashing Speicherverwaltung

Seitenverwaltung XXVI - Anti-Thrashing Strategien Speicherangebot muß genügen für working set bei gegebenem Verhältnis 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 PPF Wenn Seitenersetzungen pro Zeiteinheit (Seitentauschrate) > Schwelle, Prozesse stillegen. < Schwelle, Prozesse aktivieren. (Dynamische Strategie: etwas besser als die statische working-set-Strategie) Speicherverwaltung

Seitenverwaltung XXVII - Anti-Thrashing Strategien PPF-Modell Speicherverwaltung

Seitenverwaltung XXVIII - Anti-Thrashing Strategien Globale vs. lokale Strategien Speicheraufteilung je nach Prozeßgröße Strategien (PPF, LRU,..) nicht isoliert pro Prozeß, sondern global für alle Seiten aller Prozesse (z.B. PPF gleich für alle Prozesse). Nachteil: Nicht „gerecht“ Lazy evaluation Vermeide unnötigen Seitentausch Copy On Write Seitenkopie erst durchführen, wenn darauf geschrieben wird Page Out Pool Auszulagernde Seiten zwischenspeichern (standby) Speicherverwaltung

Seitenverwaltung XXIX - Seitenverwaltung Probleme I/O Pages und Shared Pages (besonders wichtige Seiten) DMA für ausgelagerte Prozesse: Fehler! Gemeinsame Bibliotheken, shared memory: Probleme beim Auslagern! Paging Demon Kapselung als idle-Prozeß, z.B. für page out pool Page faults und Instruktionsgrenzen Bei Seitenfehler: Wiederholung des Befehls. Aber wo fing er an? Rekonstruktionszeit nötig bei Microcode. Speicherverwaltung

Seitenverwaltung XXX - Seitenverwaltung Ablauf eines Page faults : Speicherverwaltung

Seitenverwaltung XXXI - Unix: Seitenersetzungsstrategien HP-UX: Swapping vs. Paging Swapping: schneller Zugriff, z.B. für Prozeßauslagerung z.B. swap disk, swap section einer Platte, swap directory im Dateisystem 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

Seitenverwaltung XXXII - 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): Seiten mit copy on write verhindert Kopieren von Elternseiten für Kinder (Codeüberlagerung) Dynamic Link Library DLL nur bei write kopiert, sonst nicht. Speicherverwaltung

Seitenverwaltung XXXIII - Konfigurationsmöglichkeiten UNIX Bei der Installation des Systems wird eine Swap-Partition angelegt, deren Grösse man festlegen kann. Später können weitere Swapbereiche in Form von Partitionen und Files hinzugefügt werden, sogar Swapping über NFS ist möglich. Windows NT/2000/XP Bei der Installation wird ein gewisser Standard eingestellt, der in der Systemsteuerung abgeändert werden kann, was Größe und Verteilung der Swapbereiche auf die Platten angeht. Speicherverwaltung

Segmente statt globalem linearem Adressraum Segmentierung I 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

Seitentabelle Segmenttabelle (Segmentregister) Segmentierung II Seitentabelle Segmenttabelle (Segmentregister) 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

Lokale und globale Seitentabellen INTEL 80486 Segmentierung III Lokale und globale Seitentabellen INTEL 80486 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

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

Konsistenzproblem Lösungen Direktschreiben write through Cache II Konsistenzproblem Lösungen Direktschreiben write through Zurückschreiben write back Aktualisieren copy back mittels snooper (Überwachung) Beispiel: Intel MESI Statuswort für Cachespeicher Speicherverwaltung

Virt.Speicher: keine Adressiermöglichkeit des Nachbarn Speicherschutz I 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 Sicherheitsstufen kernel mode vs. user mode z.B. Intel 80386: real modevirtual mode:user /dll /system /kernel Zugriff und Sprünge nur auf Seiten mit größerer/gleicher Statuszahl Speicherverwaltung