5.5 Virtueller Speicher

Ähnliche Dokumente
5.5 Virtueller Speicher

Paging. Einfaches Paging. Paging mit virtuellem Speicher

5.6 Segmentierter virtueller Speicher

Technische Informatik II Wintersemester 2002/03 Sommersemester Heiko Holtkamp

wichtigstes Betriebsmittel - neben dem Prozessor: Speicher

Memory Management. Peter Puschner Institut für Technische Informatik

Linux Paging, Caching und Swapping

Speicherverwaltung (Swapping und Paging)

8. Swapping und Virtueller Speicher

5 Speicherverwaltung. bs-5.1 1

Linker: Adreßräume verknüpfen. Informationen über einen Prozeß. Prozeß-Erzeugung: Verwandtschaft

Einführung in die technische Informatik

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Speicher Virtuelle Speicherverwaltung. Speicherverwaltung

Technische Informatik 2 Speichersysteme, Teil 3

Betriebssysteme - Speicherverwaltung

Kapitel 9 Hauptspeicherverwaltung

Betriebssysteme I WS 2013/2014. Betriebssysteme / verteilte Systeme rolanda.dwismuellera@duni-siegena.de Tel.: 0271/ , Büro: H-B 8404

Technische Informatik I. Übung 3 Speicherhierarchie. v t d 0 d 1 d 2 d Technische Informatik I Übung 3. Technische Informatik I Übung 3

(Prüfungs-)Aufgaben zum Thema Speicherverwaltung

4.3 Hintergrundspeicher

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung. Maren Bennewitz

Übung 4 - Betriebssysteme I

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung. Maren Bennewitz

Wenn alle Referenzbits gleich 1, wird nach FIFO entschieden

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Betriebssysteme. Dipl.-Ing.(FH) Volker Schepper

Übung zu Grundlagen der Betriebssysteme. 13. Übung

Speicherverwaltung. Gliederung. Speicherverwaltung. Motivation. Übersicht: 1. Einführung und Übersicht. 2. Prozesse und Threads. 3.

4. Übung - Betriebssysteme

Technische Informatik 2 Speichersysteme, Teil 2

6.6 Persistenter virtueller Speicher

Modul 9: Betriebssysteme. Informatik I. Modul 9: Betriebssysteme. Semantische Lücke. Definition Betriebssystem. Aufgaben eines Betriebssystems

Virtuelle Speicherverwaltung

Speicherverwaltung. Strategien. Sommersemester Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl. Seite 1

5.3 Prozessumlagerung (process) swapping

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Kapitel 6 Speicherverwaltung Seite 1 zum Teil nach: Silberschatz&Galbin, Operating System Concepts, Addison-Wesley)

Memory Management Units in High-Performance Processors

Speicherorganisation

Betriebssysteme. 8. Betriebsmittelverwaltung. Lehrveranstaltung im Studienschwerpunkt Verwaltungsinformatik

Prozesse und Scheduling

3. Speicherverwaltung

Rechnerarchitektur und Betriebssysteme (CS201): Virtual Memory

Informatik I Modul 6: Betriebssysteme

Tutorium Rechnerorganisation

Vorlesung Rechnerarchitektur. Speicher V 1.2

Betriebssysteme (BTS)

Grundlagen der Rechnerarchitektur

Praktikum Informatik 2: Betriebssysteme und Rechnernetze

, WS2012 Übungsgruppen: Mo., Do.,

Betriebssysteme. FU Berlin WS 2006/07 Klaus-Peter Löhr. bs-1.1 1

Rechnernutzung in der Physik. Betriebssysteme

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl (gbs-ws11@mailschlichter.informatik.tu-muenchen.de)

Digital Design Entwicklung der DRAMs. Richard Roth / FB Informatik und Mathematik Speicher 1

Projekt für Systemprogrammierung WS 06/07

MMU Virtualisierung. ISE Seminar Thomas Schaefer 1

Cache. Dr.-Ing. Volkmar Sieh. Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011

6 Speicherverwaltung

13. Übung mit Musterlösung

Vorlesung "Struktur von Mikrorechnern" (CBS)

Betriebssysteme und Systemsoftware

Betriebssysteme KU - Bewertung A2 - WS 15/16

Klausur zur Vorlesung Betriebssysteme Universität Paderborn, WS 1999/2000 Prof. Dr. H.-U. Heiß 14. Februar 2000

Realisierung: virtueller Prozessor: der reale Prozessor wird periodisch dem Programm zugewiesen Im Prozessor: durch Task-Status Segment (TSS)

Banner T 1 T 2. Bild T 7 T 8. Fließtext T 9

Welche der folgenden Aussagen gelten? a) Im allgemeinen gilt: ein Deadlock tritt auf gdw. der Resource-Allocation Graph einen Zykel

Klausur Betriebssystemkonzepte sowie Architektur von Rechnersystemen und Betriebssystemkonzepte

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

3.Vorlesung Systemsoftware (SYS) Hochschule Mannheim

Übersicht. Virtueller Speicher CPU-Modi Virtuelle Maschinen. ISM SS Teil 4/ProtectionI

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Prüfung VO Betriebssysteme SS2008 / 7. Juli 2008

Bitte verwenden Sie nur dokumentenechtes Schreibmaterial!

5.Vorlesung Betriebssysteme Hochschule Mannheim

Grundlagen der Rechnerarchitektur. Ein und Ausgabe

Speicher- verwaltung

Betriebssysteme. 4y Springer. Eine kompakte Einführung mit Linux. Albrecht Achilles. Mit 31 Abbildungen

1. Übersicht zu den Prozessorfamilien 2 2. Grundlagen der Rechnerorganisation 3

Systemsoftware (SYS) Fakultät für Informatik WS 2008/2009 Christian Baun. Übungsklausur

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 Auslagerungsbereich umgelagert werden. Rechtfertigung: nicht alle Teile eines Programms werden immer gleichzeitig benötigt. bs-5.5 1

5.5.1 Seitenverfahren (paging) Seite (page) = Einheit der Speicherzuweisung und Umlagerung; Genauer: einheitliche Größe s, typischerweise 2 16 KB. (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 2

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 3

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

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 5

Prozessor/MMU Arbeitsspeicher Kontextregister Rahmentabelle Seitentabelle frame d c base length 3 page backupframe Prozess 2 Hintergrundspeicher. 3 Prozess 1 resident auslagerbar Prozess 3. viele MB! bs-5.5 6

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 7

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 8

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!) bs-5.5 9

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

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 12

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 13

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 14

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 15

5.5.2.1 Request Paging bedeutet, dass der Prozess dem Betriebssystem über Systemaufrufe 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 16

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: Nachteil: effizient, keine Seitenfehler! schwer praktikabel: erfordert Kenntnis sowohl des Verhaltens als auch des Layouts des Programms. (Wo sind die Seitengrenzen?) bs-5.5 17

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 18

! 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: 1 Keine. (Notorisches Beispiel: Motorola 68000 war für Demand Paging ungeeignet.) 2 Hilfsregister der MMU, aus denen der page fault handler die benötigten Informationen entnehmen kann. 3 Prozessor annulliert die partiellen Effekte. bs-5.5 19

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 20

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 21

5.5.3.1 Keine Berücksichtigung des Programmverhaltens RANDOM RR FIFO Per Zufallsauswahl wird ein Rahmen bestimmt, dessen Seite verdrängt wird. [Einfach! Schwach fair.] (round robin) Reihum wird aus dem jeweils nächsten Rahmen eine Seite verdrängt. [Einfach! Fair.] 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 22

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: wahrscheinlich nicht mehr in einer Lokalität. (??) [Unrealistisch ohne extrem aufwendige Hardware, die entsprechende Rahmen-Schlange führt.] bs-5.5 23

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

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 25

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 26

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 27

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 28

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 29