5.5 Virtueller Speicher Wenn der reale Speicher sogar für einzelne Prozesse zu klein ist : Virtueller Speicher (virtual memory),  ist „beliebig“ groß,

Slides:



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

4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.
Kapitel 8 Speicherverwaltung
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Prof. Dr. T. Kudraß1 Hash-Verfahren. Prof. Dr. T. Kudraß2 Einführung Drei Alternativen, wie Dateneinträge k* im Index aussehen können: 1. Datensatz mit.
1 Was ist ein klassischer Prozess? A eine exe-Datei B log. Adressraum, Ablaufumgebung für genau einen Thread C log. Adressraum, Ablaufumgebung für eine.
Der Crusoe-Prozessor von Transmeta
6.6 Persistenter virtueller Speicher
Projektumfeld Gesellschaftliche Strömungen Strukturen/ Gliederung
Institut MD Universität Rostock Real-Time Linux Szenario –Board, liest (sampled) analoge Daten –produziert 8 Bit Ergebnis und gibt dieses alle 100 ms aus.
FU Berlin SS 2003 Klaus-Peter Löhr
Enno Rehling und Roger Butenuth, Uni-GH Paderborn: Arminius: Software für Linux-basierte SCI-Cluster Arminius: Software für Linux-basierte SCI-Cluster.
SAP R/3 - Speichermanagement
C.M. Presents D.A.R. und Ein Bisschen dies und das!
Kapitel 8.1 Speicherverwaltung - Paging
Dynamischer Speicher und Struktur
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
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.
2.5. Mikrocontroller-Komponenten
Vorlesung 4: Memory Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin Wintersemester.
Technische Informatik II Wintersemester 2002/03
4. Mikrocontroller-Komponenten
Referat zum Thema „DLL“
So arbeitet ein PC.
Speicherverwaltung durch Swapping
Systeme 1 Kapitel 4 Prozesse WS 2009/10.
Aufbau eines von-Neumann- Rechners Marcel Waldvogel.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation I Vorlesung 5 WS 2000/2001 Topologie, Landkarten, Datenstrukturen.
INTEL Pentium 4 Prozessor
Thorsten Lugner Consulting
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 5 SS 2001 Segmentschnitt II (n Segmente)
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Konstruktion der Voronoi-Diagramme I
VP1 VP2 VP3 PP1.1 PP2.1 PP2.2 PP1.2 PP2.3 PP1.3 MMU VP1 VP2 VP3 PP1 PP4 PP6 MMU-Konfiguration für Prozess P1 Virtual Memory von P1 Physical Memory.
Computerorientierte Physik VORLESUNG und Übungen Vorlesung Zeit: Di., 8.30 – Uhr Ort: Hörsaal 5.01, Institut für Experimentalphysik, Universitätsplatz.
HMS Modul 5 Weiterbildungstagung Qualifikationsverfahren ALS und PE
Aufgabe 1 In einem Mikroprozessorsystem mit 32-bit-Datenzugriff auf den Hauptspeicher ist ein Daten-Cache vorhanden. Das Laden des Caches erfolgt in Blöcken.
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
Betriebssysteme Übung Tutorium „System Calls & Multipgrogramming“
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.
Studiengang Informatik FHDW
Betriebssysteme Übung Tutorium „TLB & Virtual Memory“
Von Florian, Patrick, Alexander und Heiko
Gruppe 2 MEMORY MANAGEMENT Jakob Dietschy Arnold Huber
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
5 Speicherverwaltung Pufferspeicher (cache)
Puffer-Verwalter (1) Aufgabe: Performanzkontrolle bzgl. Hauptspeichernutzung. Puffer-Verwalter versucht, Plattenzugriffe durch Vorhalten von häufig benötigten.
2.3 Implementierung von Prozessen
KA – Rechnerarchitektur II ____________________________________________________________________________________________ ____________________________________________________________________________________________.
Jakob Dietschy Arnold Huber Karl Philip Schneider Lukas Unterberger Daniel Dötzl Gruppe 2 MEMORY MANAGEMENT.
Vs51 5 Verteilte Datenverwaltung. vs52 Situation:Zusammengehöriger Datenbestand ist über mehrere Stationen verteilt, z.B. Fragmentierung: in mehrere Fragmente.
Bs Dateien als Segmente Idee:Datei = persistentes Segment Konsequenzen:  Datei kann in virtuellen Adressraum eingeblendet werden (memory-mapped.
6.2 Repräsentation auf Platten
Vs Objektpufferung (caching) = dynamische, ad-hoc-Replikation einer Primärkopie: Zugriffswilliger beschafft sich temporär eine lokale Kopie cache.
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.
4.4 Speicherarchitektur E/AGeräte E/A-Einheiten Leitwerk Prozessor
Bs Segmentierung Adressraum besteht aus mehreren Segmenten (segments), die unabhängig voneinander manipulierbar sind. Segmentierungsstruktur ist.
Vs61 6 Fehlertoleranz. vs62 Zuverlässigkeit (reliability) Sicherheit vor FehlernSicherheit vor Angriffen (safety)(security) WS/SS xySystemsicherheit SS.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
RAM (Random Access Memory)
Arbeiten mit WordSmith 4. Inhalt 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus) 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus)
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
RAM (Random Access Memory)
Studiengang Informatik FHDW
 Präsentation transkript:

5.5 Virtueller Speicher Wenn der reale Speicher sogar für einzelne Prozesse zu klein ist : Virtueller Speicher (virtual memory),  ist „beliebig“ groß, nimmt alle Prozesse auf,  ist in gleichgroße Teile – „Seiten“ – aufgeteilt,  die zwischen Arbeitsspeicher und Auslagerungs- bereich umgelagert werden. Rechtfertigung: nicht alle Teile eines Programms werden immer gleichzeitig benötigt. bs-5.5

5.5.1 Seitenverfahren (paging) Seite (page) = Einheit der Speicherzuweisung und Umlagerung; einheitliche Größe s, typischerweise 2 – 16 KB. Genauer:  (virtuelle) Seite eines Programms = virtueller Adressbereich von k*s bis (k+1)*s – 1 (k=0,1,..) (oder dessen Inhalt)  (reale) Seite = einer der Teile des virtuellen Speichers bs-5.5

Adressbereich von k*s bis (k+1)*s – 1 (k=0,1,..) Rahmen (frame) = Adressbereich von k*s bis (k+1)*s – 1 (k=0,1,..) im Arbeitsspeicher, kann eine Seite aufnehmen; entsprechend im Auslagerungsbereich. Beachte: 1. Durch einheitliche Seitengröße wesentlich vereinfachte Speicherverwaltung gegenüber der Segmentierung. 2. Zwar keine externe, aber interne Fragmentierung. bs-5.5

Adressierung z.B. bei 32-Bit-Adressen (d.h. 4-GB-Adressraum) und Seitengröße s = 4096: virtuelle Adresse: 20 12 (vgl. 5.4.1) page = (virtuelle) Seitennummer offset = Distanzadresse page offset  je Prozess maximal 220 Seiten à 4096 Bytes bs-5.5

5.5.1.1 Deskriptorverwaltung Seitendeskriptor (page descriptor) enthält Rahmennummer im Arbeitsspeicher oder Auslagerungsbereich, dirty bit, und c-Bit einer Seite Seitentabelle (page table) enthält fortlaufend die Deskriptoren für alle Seiten des virtuellen Speichers (0, wo nicht benutzt) Rahmentabelle (frame table) enthält für jeden Rahmen die (reale) Nummer der dort eingelagerten Seite (0, wenn nicht benutzt) und Rahmennummer im Auslagerungsbereich bs-5.5

Prozessor/MMU Arbeitsspeicher Hintergrundspeicher Seitentabelle Kontextregister Rahmentabelle frame d c base length page backupFrame 3 Prozess 2 . Prozess 1 3 resident auslagerbar Hintergrundspeicher Seitentabelle ist selbst „gepaged“ - ......... Prozess 3 . viele MB ! bs-5.5

5.5.1.2 Adressumsetzung mit Assoziativspeicher Kontextregister (context register) in der MMU übernimmt die Rolle von Basis/Längenregister – jetzt nicht für einen Bereich im Arbeitsspeicher, sondern für einen Bereich in der Seitentabelle – und damit des virtuellen Speichers. Aber: Für eine schnelle Adressumsetzung müssten alle Seitendeskriptoren des laufenden Prozesses in MMU-Registern sein  Tausende von Registern ? bs-5.5

Assoziativspeicher (associative memory, descriptor cache, MMU enthält einen Assoziativspeicher (associative memory, descriptor cache, TLA – translation look-aside buffer), bestehend aus Assoziativregistern (associative registers), welche nur die aktuell benötigten Deskriptoren enthalten (typische Anzahl: 8 – 32); diese werden von der MMU automatisch nachgeladen, wenn auf eine Seite „erstmalig“ zugegriffen wird. („associative“, weil nicht über Registernummer identifiziert, sondern über die enthaltene Nummer der virtuellen Seite !) bs-5.5

w = writable bit – für Zugriffsschutz (s.u.) u page frame w d d = dirty bit w = writable bit – für Zugriffsschutz (s.u.) u = used bit: wird bei Verdrängung eines Deskriptors durch einen neu benötigten Deskriptor in allen Registern gelöscht und bei der Benutzung eines Deskriptors in dessen Register gesetzt. Beim nächsten Verdrängen wird dort verdrängt, wo u nicht gesetzt ist (dabei d in Seitentabelle retten!) Wenn u überall gesetzt ist, wird irgendwo verdrängt ! bs-5.5

Arbeitsspeicher- Rahmen virtuelle Adresse page offset . Seitentabelle Kontextregister offset base length 3 . Assoziativspeicher u page frame w d . bs-5.5

hardDesc = A<page> ; if hardDesc == 0 then (descriptor not loaded, access page table) if page >= length then address fault end; (beyond last page) softDesc = pageTable[base+page]; if softDesc.frame == 0 then page fault end; (page non-resident) victim = findPreemptable(); (slot with u-bit not set) p = A<victim>.page; (save dirty bit) pageTable[base+p] = pageTable[base+p] or A<victim>.d; A<victim> = (1,page,softDesc.frame,1,0); hardDesc = A<page>; if write and not hardDesc.w then access fault end; location = hardDesc.frame * pageSize + offset; A<page>.d = A<page>.d or write . (set dirty bit)

Beachte: Der Assoziativspeicher enthält eine Teilmenge der Deskriptoren der eingelagerten Seiten des aktiven Prozesses. Prozessumschaltung:  dirty bits aus dem Assoziativspeicher retten  Löschen des Assoziativspeichers  Umsetzen des Kontextregisters bs-5.5

5.5.2 Das Lokalitätsprinzip ? Strategie für die Umlagerung von Seiten ? Ausgangspunkt: nur diejenigen Seiten eines Prozesses einlagern, die der Prozess tatsächlich benötigt ! bs-5.5

1. Prozess greift nicht permanent auf alle Bereiche Beobachtungen: 1. Prozess greift nicht permanent auf alle Bereiche seines Adressraums zu. 2. Es genügt, wenn die aktuell benötigten Teile eines Prozesses sich im Arbeitsspeicher befinden. 3. Dies erlaubt auch die Bearbeitung von Programmen, die insgesamt größer als der Arbeitspeicher sind. bs-5.5

Programme zeigen „Lokalitätsverhalten“: sie greifen während längerer Zeiträume („Phasen“) nur auf eine bestimmte Teilmenge ihrer Seiten zu. aktuelle Lokalität (locality) Konsequenz: nur diejenigen Seiten umlagern, die zur Lokalität gehören, den Rest ausgelagert lassen ! bs-5.5

bedeutet, dass der Prozess dem Betriebssystem über System- 5.5.2.1 Request Paging bedeutet, dass der Prozess dem Betriebssystem über System- aufrufe mitteilt, welche Seiten jeweils zu seiner Lokalität gehören: include(addr) erweitert die Lokalität um die Seite, die addr enthält ( Einlagerung „on request“, auch prepaging) exclude(addr) verringert die Lokalität um die Seite, die addr enthält Rechtfertigung: Programm weiß am besten über sein Verhalten Bescheid ! bs-5.5

 Modifizierte Prozess-Umlagerung (locality swapping):  anstelle des gesamten Prozesses wird jeweils seine Lokalität umgelagert;  aus der Lokalität entfernte Seiten werden zwar ausgelagert, aber nicht wieder eingelagert;  Erweiterung der Lokalität führt zu vorzeitiger Auslagerung. Vorteil: effizient, keine Seitenfehler! Nachteil: schwer praktikabel: erfordert Kenntnis sowohl des Verhaltens als auch des Layouts des Programms. (Wo sind die Seitengrenzen?) bs-5.5

geht davon aus, dass man über die Lokalität nichts weiß: 5.5.2.2 Demand Paging geht davon aus, dass man über die Lokalität nichts weiß: Seitenfehler (page fault) steuern das Paging: Hardware: Unterbrechung; Page fault handler der Speicherverwaltung: - veranlasst das Einlagern der Seite („on demand“), - setzt nach erfolgtem Einlagern den Prozess mit dem unterbrochenen Befehl fort. bs-5.5

! Wiederaufsetzen des Prozesses nach Seitenfehler ist eventuell problematisch: unterbrochener Befehl kann partiell ausgeführt sein (z.b. bei Autoinkrement-Adressierung, Mehrwort-Befehlen u.ä.) Lösungsmöglichkeiten:  Keine. (Notorisches Beispiel: Motorola 68000 war für Demand Paging ungeeignet.)  Hilfsregister der MMU, aus denen der page fault handler die benötigten Informationen entnehmen kann.  Prozessor annulliert die partiellen Effekte. bs-5.5

Fragen zum Demand Paging: ? Wenn für das Einlagern keine freien Rahmen verfügbar sind, welche Seite soll dann verdrängt werden ? ? Wie kann das locality swapping approximiert werden ? ? Oder sind bessere Lösungen möglich ? bs-5.5

5.5.3 Seitentausch-Strategien (page replacement policies/algorithms) beantworten die Frage, welche Seite verdrängt werden sollte, wenn freier Rahmen für einzulagernde Seite benötigt wird. Optimale Strategie (B°), nicht praktikabel, nur für Vergleichszwecke: diejenige Seite wird verdrängt, deren nächste Benutzung am weitesten in der Zukunft liegt. bs-5.5

5.5.3.1 Keine Berücksichtigung des Programmverhaltens RANDOM Per Zufallsauswahl wird ein Rahmen bestimmt, dessen Seite verdrängt wird. [Einfach ! Schwach fair.] RR (round robin) Reihum wird aus dem jeweils nächsten Rahmen eine Seite verdrängt. [Einfach ! Fair.] FIFO Die am längsten eingelagerte Seite wird verdrängt. [Rahmen-Schlange führen! Sehr fair.] ! Fairness bezieht sich auf die Vergabe von Rahmen an Seiten ! bs-5.5

5.5.3.2 Orientierung am beobachteten Programmverhalten LRU (least recently used, „am wenigsten jüngst benutzt“) Verdrängt wird diejenige Seite, deren Benutzung am längsten zurückliegt. Begründung: „wahr- scheinlich nicht mehr in einer Lokalität“. (??) [Unrealistisch ohne extrem aufwendige Hardware, die entsprechende Rahmen-Schlange führt.] bs-5.5

NRU (not recently used, „jüngst nicht benutzt“) Heuristische Approximation von LRU: Hardware bietet neben dirty bit d zusätzlich referenced bit r (auch „accessed bit“) Periodisch werden alle r-Bits gelöscht. Auswahl zur Verdrängung gemäß Rangfolge r d 0 0 0 1 1 0 1 1 Kleine Übungsfrage: wie kann ein fehlendes r-Bit vom Betriebssystem „emuliert“ werden ? bs-5.5

clock oder second chance Modifikation von RR, approximiert LRU. Die Rahmen werden zyklisch inspiziert: r = 0 : Opfer gefunden r = 1: lösche r (d.h. wenn die Seite aktiv war, erhält sie eine weitere Chance) bs-5.5

5.5.4 Vermeidung von Seitenflattern Seitenaustausch global: alle eingelagerten Seiten sind potentielle Opfer, d.h. Prozess kann anderem Prozess „einen Rahmen stehlen“ prozesslokal: Prozess verdrängt eine eigene Seite zugunsten einer anderen bs-5.5

Globaler Seitenaustausch: alle Prozesse sind i.d.R. mit eingelagerten Seiten im Arbeitsspeicher vertreten; wenn die Gesamtheit der Lokalitäten aller Prozesse den Arbeitsspeicher sprengt, droht Seitenflattern (thrashing): Prozesse stehlen sich gegenseitig die Rahmen  hektisches Ein/Auslagern  häufig warten alle Prozesse auf fehlende Seiten! bs-5.5

Prozesslokaler Seitenaustausch: Tendenz zum Seitenflattern ist Indiz für Vergrößerung der Lokalität Lokalität approximieren durch Arbeitsmenge (working set), das sind diejenigen Seiten, die „in der letzten Zeit“ vom Prozess benutzt wurden. Größe des Zeitfensters ist Systemparameter bs-5.5

 Empfehlenswerte Strategie: Working Set Swapping 1. Regelmäßige Prozessauslagerung (außer gemeinsame Seiten). 2. Dabei Working-Set-Größe merken (Anzahl der Seiten). 3. Wiedereinlagerung setzt voraus, dass Arbeitsspeicher in dieser Größe verfügbar ist. 4. Arbeitsspeicher entsprechend reservieren, aber bei Einlagerung nur aktuelle Code-Seite einlagern. 5. Auffüllen des Working Set on demand (evtl. verändert!). 6. Beim nächsten Auslagern evtl. kleineren Working Set feststellen. Bei (lokalem) Seitenflattern Prozess auslagern und Working-Set-Größe erhöhen. bs-5.5