Programm. Logischer Speicher. Physischer Speicher. Hintergrundspeicher

Ähnliche Dokumente
Tutorium Rechnerorganisation

wichtigstes Betriebsmittel - neben dem Prozessor: Speicher

Memory Management. Peter Puschner Institut für Technische Informatik

Speicherverwaltung (Swapping und Paging)

Linux Paging, Caching und Swapping

Technische Informatik II Wintersemester 2002/03 Sommersemester Heiko Holtkamp

Übung zu Einführung in die Informatik # 10

Paging. Einfaches Paging. Paging mit virtuellem Speicher

5.5.5 Der Speicherverwalter

Einführung in die technische Informatik

(Prof. Dr. J. Schlichter, WS 2011 / 2012) Übungsleitung: Dr. Wolfgang Wörndl

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

Wenn alle Referenzbits gleich 1, wird nach FIFO entschieden

Fachbericht Thema: Virtuelle Speicherverwaltung

Wie groß ist die Page Table?

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

Kapitel VI. Speicherverwaltung. Speicherverwaltung

Übung zu Grundlagen der Betriebssysteme. 13. Übung

8. Swapping und Virtueller Speicher

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

1. Speicher. Typische Nutzung eines Adreßraums. Systemsoftware. Textbereich relativ klein. Sehr großer Abstand zwischen Heap und Stack

Betriebssysteme 1. Thomas Kolarz. Folie 1

Kapitel 9 Hauptspeicherverwaltung

5.6 Segmentierter virtueller Speicher

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

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

Technische Informatik 2 Speichersysteme, Teil 3

Speicher Virtuelle Speicherverwaltung. Speicherverwaltung

Lösungsvorschlag zur 6. Übung

(Prüfungs-)Aufgaben zum Thema Speicherverwaltung

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Grundlagen der Informatik III Wintersemester 2010/2011

4.3 Hintergrundspeicher

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung. Maren Bennewitz

Speicher- Management

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

1 Windows 2000/XP (3.1, NT, 95, 98)

Linux Memory Management für MySQL

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung. Maren Bennewitz

5.5 Virtueller Speicher

Definitionen zum Verschnitt

Grundlagen der Betriebssysteme

Virtuelle Speicherverwaltung

Technische Informatik 1

Intel x86 Bootstrapping

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P

Bibliotheks-basierte Virtualisierung

Betriebssysteme (BTS)

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

Anbindung zum Betriebssystem (BS)

Technische Informatik 2 Speichersysteme, Teil 2

Tutorium Rechnerorganisation

Virtueller Speicher. Teil 2. Prof. Dr. Margarita Esponda-Argüero WS 2011/2012. M. Esponda-Argüero

Echtzeit-Multitasking

Grundlagen von Caching-Mechanismen beim Zusammenspiel von Mikroprozessor und Betriebssystem. Klaus Kusche Dezember 2015

Konzepte von Betriebssystemkomponenten Disk-Caches und Dateizugriff

MMU Virtualisierung. ISE Seminar Thomas Schaefer 1

3. Speicherverwaltung

Betriebssysteme Kap A: Grundlagen

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

Besprechung der Probeklausur Übungsscheine, inoffizielle Evaluation Übungsaufgaben Noch Fragen?

10.1 Seitentauschverfahren. Kapitel 10 Algorithmen zur Speicherverwaltung. Auswahlstrategie. Modellierung der Seitenzugriffe

Besprechung des 8. Übungsblattes Einführung in Caches Cache-Organisation Cache-Ersetzungsstrategien Aufgaben (an der Tafel) Testklausur

CA Übung Christian kann heute nicht kommen => ich bin heute da, Christian das nächste Mal wieder

Hugepages, NUMA or nothing on Linux?

Rechnernutzung in der Physik. Betriebssysteme

Praktikum Informatik 2: Betriebssysteme und Rechnernetze

Betriebssysteme (BS) Inhalt. Speicherverwaltung. Olaf Spinczyk 1.

Vorlesung Betriebssysteme II

Betriebssysteme - Speicherverwaltung

Bootvorgang des DSM-Systems Systems Plurix

Konzepte von Betriebssystemkomponenten (KVBK) Schwerpunkt Linux

Grundlagen Rechnerarchitektur und Betriebssysteme

, WS2012 Übungsgruppen: Mo., Do.,

6 Speicherverwaltung

1. Von-Neumann-Architektur (7/66 Punkte)

Übung 4 - Betriebssysteme I

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

Grundlagen der Rechnerarchitektur

9 Speicherorganisation

Teil IX. Adressraum und Arbeitsspeicher

Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming

Prozesse und Scheduling

Computer-Systeme Teil 15: Virtueller Speicher

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

Verteilte Echtzeit-Systeme

Universität Bielefeld Technische Fakultät AG Rechnernetze und verteilte Systeme. Vorlesung 4: Memory. Wintersemester 2001/2002. Peter B.

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

Speicherorganisation

Rechnerarchitektur und Betriebssysteme (CS201): Virtual Memory

Verteilte Systeme. Verteilte Systeme. 5 Prozeß-Management SS 2016

6 Speicherorganisation

13. Übung mit Musterlösung

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

Betriebssysteme 1. Thomas Kolarz. Folie 1

Betriebssysteme WS 2012/13 Peter Klingebiel, DVZ. Zusammenfassung Kapitel 4 - Datenträger/Dateiverwaltung

Hausübung 5 (Musterlösung )

Speicherverwaltung, Interrupts & Exceptions. Daniel Richter Seminar Prozesssteuerung und Robotik 03. Dezember 2008

Virtueller Speicher und Cache. VL5 GRT, SS 2004, Kneisel

, SS2012 Übungsgruppen: Do., Mi.,

Transkript:

5. Virtueller Speicher 5.1 Grundprinzip Dem Programm wird ein größerer Hauptspeicher vorgespiegelt, als physikalisch vorhanden ist: - Das Programm arbeitet nur mit logischen bzw. virtuellen Adressen, - OS, Compiler und HW übersetzen diese virtuellen Adressen in physische: Programm Logischer Speicher MMU OS Physischer Speicher Hintergrundspeicher 95 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Logischer Adressraum: - max. Größe abhängig von Hardware, - 32-Bit bei IA32 CPUs (Intel & AMD), - variabel große Segmente = Segmentation. - oder gleich große Seiten (pages) = Paging. - oder auch beides kombiniert (z.b. Intel). Physischer Adressraum: - Größe ergibt sich aus der Bitbreite der Speicheradressierung. - Intel IA32 Rechnersysteme bieten 32-Bit (4 GB). Hintergrundspeicher: - Dient dem Ein- und Auslagern inaktiver Programmteile. - Langsamer, preisgünstiger, größer (Festplatte, Netz...), - Steuerung über Betriebssystem & Interrupts. MMU - Memory Management Unit im Prozessor: - HW-Einrichtung zur Adressübersetzung, - verwendet Segment- und/oder Seitentabelle, - erzeugt nötigenfalls Page- und Segment-Faults. Unterschiede zur dynamischen Partitionierung: - Auch Teile eines Programms können ausgelagert werden. - Programme, die größer als der Hauptspeicher sind, können nun auch verarbeitet werden. 96 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.2 Segmentierung Hauptspeicher & Programme werden in variabel große Segmente unterteilt: - ein Stack-, mehrere Code- & Daten-Segmente, - eventuell pro Array ein Datensegment, - eventuell pro Prozedur ein Segment, Segmenttabelle enthält Beginn und Länge. Abbildungsprinzip: - Register enthalten den Offset im Segment, - Segmentregister enthalten einen Index in die Segmenttabelle. #Segment 16 Segment-Index Segmenttabelle Offset Segmentierung für Programm verborgen. Segmentregister werden durch das BS beim Programmwechsel gesetzt. Beginn Länge 32 Offset phys. Adresse 97 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Beispiel: Adressierung - Schreibe den Wert 8 im aktuellen Datensegment an Offset 1024: Hauptspeicher Instruktion: mov ds:[eax], 8 Registerbelegung: Datenseg.: ds = 4 Register: eax = 1024 Segmenttabelle 1536 512 1024 Beginn: 512 Länge: 8192 0 0 Compiler berücksichtigt Segmente: - Sprungtabelle enthält außer der Offsetadresse der Prozedur, auch Segment#. - Beim Prozeduraufruf über Segmentgrenzen hinweg, wird auch das Segmentregister geladen und evtl. die Präsenz geprüft, - Segmentadresse trägt der Lader ein. 4 98 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Virtueller Speicher: - Bei reiner Segmentierung ist der nutzbare virtueller Adressraum so groß, wie der Hauptsp. - Programme bestehen aus mehreren Segmenten. - Nicht benötigte Segmente können auf Disk ausgelagert werden. - Present-Bit: Segment ausgelagert? - Bei Zugriff auf ein ausgelagertes Segment tritt ein Segmentfehler (Segment Fault) auf. - Vor der Einlagerung muss evt. ein Segment verdrängt werden, da der HS erschöpft ist Accessed- und Modified-Bit für Ersetzungsstrategie relevant. Mehrprogrammbetrieb mit segment-orientierten virtuellen Adressraum: - Ausgelagerte Segmente können an beliebiger Stelle wieder eingelagert werden. - ganze Segmente werden ein- und ausgelagert, - auch hier tritt externe Fragmentierung auf, - Kompaktifizierung auf Disk ist teuer. 32 MB phys. AR n MB Disk 0 0 99 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Speicherschutz: zusätzliche Bits in Einträgen der Segmenttabelle: - Privilegstufen zur Abgrenzung von Code & Daten des Kerns gegenüber Anwendungen. - Segmentlänge verhindert Zugriffe außerhalb des Segmentbereichs. - Zugriffsarten: Read, Write & Execute. Bewertung: - (Im Prinzip hat jedes Programm den Hauptspeicher für sich alleine.) - je nach Verwendung ist interne Fragmentierung vermeidbar, nicht aber externe. - Abhilfe durch Kompaktifizierung ist möglich. - Segmente nur komplett auslagerbar (evt. groß). Bem.: Anzahl der Segmente beschränkt: - z.b. bei IA 32 max. 8192 Stück pro Programm. - Eine Tabelle für alle Programme reicht nicht. - pro Block/Objekt ein Segment nicht mögl. Segmente dürfen sich auch überlappen - z.b. BS Zugriff auf gesamten HS. 100 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3 Paging Unterteilt den logischen Adressraum in gleich große Seiten (pages): - IA32 unterstützt 4 GB logischen Adressraum, der in 4 KB Seiten unterteilt wird. Phys. AR in gleich große Seitenrahmen (page frames / Kachel) zerlegt: - gleich groß wir eine logische Seite, dient zur Einbettung der logischen Seiten. Grundlage für Paging ist Lokalität: - Programm greift in einem kleinen Zeitraum t nur auf einen Teil seines AR zu. - Nach Zugriff auf Adresse a ist ein Zugriff in der Nähe von a wahrscheinlich. - Gründe: sequentielle Ausführung, Schleifen,... nicht benötigte Teile auslagern. Beim Zugriff auf eine ausgelagerte Seite tritt ein Seitenfehler (Page Fault) auf. Damit werden Programme in viele kleine auslagerbare Einheiten unterteilt mehr Flexibilität. Entwurfsfragen: - Seitengröße: interner Verschnitt vs. Verwaltung. - Ersetzungsregel: Welche Seite wird ersetzt? - Laderegel: Wann wird eine Seite geladen? 101 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Einfach virtualisierter Speicher: - Die Gesamtsumme des Speicherverbrauchs aller Programme ist beschränkt, - Keine Umschaltung der Adressübersetzung erforderlich (TLB!), - Kein impliziter Zugriffsschutz durch die Virtualisierung, - Koexistenz der Programme trotzdem möglich, - Nur eine Übersetzungstabelle. Progr. 1 Hintergrundspeicher Progr. 2 Logischer AR MMU Physikalischer AR BS 102 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Mehrfach virtualisierter Speicher: - Pro Prozess separater virtueller Adressraum. - Adressübersetzungstabelle muss beim Prozesswechsel umgeschaltet werden. - Teile des Betriebssystemadressraumes auch für die Anwendungsprogramme zugreifbar. Hintergrundspeicher Proz.-1 Proz.-2 Prg.-3 M M U Physikalischer AR BS BS BS 103 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.1 Adressübersetzung Einstufiger Übersetzungsvorgang - z.b. 20 Bit virtuelle Adr., - 4 KByte Seiten, - Seitentabelle virtuelle Adresse konsumiert 4 MB. Aufeinanderfolgende 20 Seiten müssen nicht unbedingt auf Seitentabellen-Index fortlaufende Kacheln abgebildet werden. 12 Offset Seitentabelle phys. Adresse 104 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.2 Mehrstufige Adressübersetzung Seitentabellen der Ebenen 1+i können evt. ausgelagert werden. Somit weniger Speicherbedarf für Tabelle. Damit kann es u.u. mehrere Seitenfehler virtuelle Adresse beim Zugriff auf eine 8 6 6 Adresse geben. 12 Offset Kontextregister Kontexttabelle Ebene 1 Ebene 2 Seitentabellen Ebene 3 105 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.3 Typisches Format für die Seitentabelle (Intel Pentium): Kacheladresse nur gültig, wenn die Seite im Speicher vorhanden ist. Andernfalls können diese 20 Bits zum Auffinden der Seite auf Disk verwendet werden. Bits: dirty & accessed von MMU gesetzt. Präsenz-Bit durch BS verwaltet. Page Frame/Kachel - Adresse Avail 00 dirty accessed PCD PWT U/S W/R P 20 12 Nutzbar für Betriebssystem beschrieben Use-Bit Seite hat Cache Disabled Cache durchschreiben User Seite, nicht Supervisor Seite beschreibbar Präsenz Bit, Seite vorhanden 106 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.4 Übersetzungspuffer (TLB) TLB = "Translation Lookaside Buffer". TLB puffert früher übersetzte virtuelle Adressen und deren phys. Adr. Hat nur wenige Einträge: P4 (40), IA64 (128). Falls kein Treffer im TLB erfolgt, wird hardwaremäßig auf die Seitentabellen im Hauptspeicher zugegriffen (teuer). Hohe Trefferrate (Hit ratio) wichtig. Cache benützt nur physikalische Adressen: - nicht sichtbar für die Software! - mit physikalischer Adresse Eindeutigkeit: TLB Programmierung: - Komplett löschen bei Adressraumwechsel. - 1 Eintrag entfernen beim Auslagern einer Seite. virtuelle Adresse physikalische Adresse TLB Seitentabellen Betriebssystem Daten Cache Haupt- Speicher 107 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.5 Invertierte Seitentabellen Für sehr große virtuelle Adressenbereiche besser einen Eintrag pro physikalische Kachel als Eintrag pro logischer Seite anlegen. 64-Bit Adressraum (z.b. Sun Sparc, Intel Itanium, Dec Alpha,...): - ~ 252 Einträge in Seitentabelle, - ~ für 4 KB Seiten & 8 Byte pro Eintrag, - ~ 32 000 Terabyte nur für Seitentabellen. Lösung: Parallele Suche in großem TLB (z.b. 128 Einträge bei IA64). Bei Fehlanzeige im TLB: - OS wird per Interrupt gerufen (TLB Miss Fault), - über Hashtabelle zur phys. Adresse. - Hashtab. liegt im virt. Adressraum evt. TLB Miss Fault beim Durchsuchen. Bei Fehlanzeige in der Hashtabelle: - Betriebssystem konsultiert sekundäre Seitentabelle, - evtl. sind Tabellen und Seiten auf Festplatte Einlagern, - Betriebssystem muss TLB und Hashtabelle konsistent halten. Neue MMU für 64-Bit Intel-Architektur. 108 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.6 Einlagerungsstrategie Demand Paging: - Nur die benötigten Seiten eines Programms werden eingelagert. - Einlagerung erfolgt erst bei Bedarf, also bei einem Seitenfehler. Pre-Paging: - Versuch, hohe Seitenfehlerrate beim Lauf eines Programms zu vermeiden. - Kosten/Nutzen-Verhältnis von Pre-Paging hängt davon ab, ob die in der Zukunft benötigten Seiten eingelagert werden können. - Eventuell bei einem Seitenfehler benachbarte Seiten auch einlagern Lokalität ausnutzen. Kombination von Pre- und Demand Paging: - Pre-Paging zu Beginn der Programmausführung vermeidet anfängliche hohe Seitenfehlerrate. - Pre-Paging für den Anfang des Programmcodes, für statische Daten, Teile des Heaps und Stacks. - weitere Einlagerungen erfolgen durch Demand Paging. 109 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.7 Ersetzungsalgorithmen Prinzip der Seitenersetzung: - Ist eine Seite nicht im HS (page fault), so wird sie mit Seitenersetzungsverfahren eingelagert. - Ist der HS erschöpft muss zuvor eine Seite auf Disk ausgelagert werden, damit Platz frei wird. - Ein-/Auslagern teuer Ersetzungsalgorithmus sollte Seitenfehler minimieren. Optimale Seitenersetzung: - Ersetze die Seite, die zukünftig am längsten nicht mehr benötigt wird. - Zukunft unbekannt theoret. untere Grenze - Beispiel für einen HS mit 3 Kacheln: a b c d c a e d b c a auslagern Seitenfehler für Seite D 110 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.8 Not recently used (NRU) Flags in der Seitentabelle: - Use-Bit falls die Seite referenziert wurde (periodisch zurücksetzen) - Dirty-Bit falls Seite verändert wurde (wichtig für die Auslagerungsstrategie). Auslagerungspriorität nach Klassen: A: Use-Bit = false, Seite unverändert B: Use-Bit = false, Seite verändert C: Use-Bit = true, Seite unverändert D: Use-Bit = true, Seite verändert Fall B beschreibt eine Seite, die in einem früheren Intervall verändert wurde und noch zurückgeschrieben werden muss. 5.3.9 First-in, First-out (FiFo) Einfache Liste der eingelagerten Seiten. Die am längsten residente Seite wird ersetzt. Nachteil: - Auch häufig genutzte Seiten werden entfernt. - ungünstig bei zyklischen Zugriffsmustern. 111 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Belady s Anonomalie Mehr Seitenfehler trotz mehr Kacheln: tritt u.u. bei FIFO-Strategie auf. 4 Kacheln 11 Seitenfehler: 0 1 2 3 4 0 1 5 6 0 1 2 3 5 6 5 Kacheln 13 Seitenfehler: 0 1 2 3 4 0 1 5 6 0 1 2 3 5 6 Optimal: 4 Kacheln 9 Seitenfehler: 0 1 2 3 4 0 1 5 6 0 1 2 3 5 6 112 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.10 Verfahren des zweiten Versuches "Second chance page replacement algorithm". Verbesserung der FiFo-Strategie. Falls USE-Bit gelöscht, dann Seite auslagern. Falls USE-Bit gesetzt: zweite Chance - USE-Bit zurücksetzen, - Seite hinten erneut einordnen, Mehr Verwaltungsaufwand für die Liste als bei einfachem Fifo. Problem: evt. lange a used 2nd Chance alte Seiten auslagern a e unused used neue Seiten Suche nach Auslagerungs-Kandidat. Bemerkungen: - Zurücksetzen der Used-Bits impliziert auch, dass betroffene Seiten aus TLB gelöscht werden. - Andernfalls wird das Used-Bit beim nächsten Zugriff nicht gesetzt. b used c unused d used 113 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.11 Uhrzeigerverfahren Ähnlich wie Verfahren des zweiten Versuchs. Einen Zeiger im Ring umlaufen lassen. Ringliste der Seiten absuchen. Falls Use-Bit gelöscht, dann Seite auslagern. Falls Use-Bit gesetzt, zurücksetzen & Zeiger inkrementieren. Unterschied zu second chance Verfahren: - kein Umhängen von Listenträgen. g used h un used f used i un used j un used k unused l unused a used b used e used d used c unused 114 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.12 Least recently used (LRU) Am längsten unbenutzte Seite auslagern. Theoretischer Ansatz: - 64 Bit Zeitstempel in Kacheltabelle halten, - Zeitpunkt des letzten Zugriffs eintragen, - bei jedem Zugriff aktualisieren zu teuer. LRU-Simulation in Software: - pro Kachel ein Zähler, - periodisch werden die Zähler gealtert, - Kachel mit niedrigstem Zähler ersetzen. Arbeitsweise des Zählers: 1) Zähler vor Verschiebung 0 1 0 1 1 0 0 0 Rechtsverschiebung 2) 0 1 0 1 1 0 0 USE-Bit wird vorne eingefügt 1 0 herausgeschobenes Bit entfällt 115 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.13 Allokation von Kacheln Jedes Programm benötigt eine Mindestanzahl an Kacheln. Allokationsalgorithmen: - proportional, - gleichverteilt, - prioritätenabhängig,... Lokale Strategie: - Bei einem Seitenfehler werden nur Seiten des betroffenen Programms ausgelagert. - Die Prog. haben Speicherbereich fester Größe. - Vorteil: andere Prg. werden nicht beeinträchtig. - Nachteil: Kachelbedarf schwer schätzbar. Globale Seitenersetzungsverfahren: - Tritt ein Seitenfehler auf, so stehen die Seiten aller Programme zur Disposition. - Programme haben physikalischen Speicherbereich variabler Größe. - Vorteil: mehr Flexibilität Optimierung des Gesamtsystems. - Nachteil: gegenseitige Beeinflussung des Paging-Verhaltens. 116 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.14 Thrashing (Seitenflattern) Falls ein Programm weniger Kacheln zur Verfügung hat, als es ständig nutzt ergeben sich sehr häufige Seitenfehler & -austausche (Thrashing). Mögliche Ursachen: - lokale Verfahren: Zahl der Kacheln zu gering. - globale Verfahren: ein Programm braucht zu einem Zeitpunkt sehr viele Seiten, wodurch die Bereiche aller anderen sehr klein werden. Abhilfe: - eventuell Programm mit niedriger Priorität ganz auslagern (Swapping) viele Kacheln werden frei - Zuordnen ausreichend vieler Kacheln Problem: Bestimmen dieser Anzahl Lösungsansatz: Working-Set-Modell 117 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.15 Working-Set-Modell Working-Set-Modell approximiert Lokalität. Working Set (WS) = Menge von Seiten, die in t referenziert werden. Working Set Window (WSW) = Anzahl verfügbarer Kacheln für ein Programm. Beispiel: Seitenzugriffssequenz & Working-Set... 2 6 1 5 7 7 7 7 5 1 6 2 3 4 1 2 1 8 1 3 3 4 4 4 3 4 3 4 4 4 1 3 2 4... WS(t1)={1,2,5,6,7} WS(t2)={3,4} Problem: richtige Wahl WSW: - zu klein: WSW umfasst nicht die gesamte Lokalität Thrashing. - zu groß: WSW umfasst mehrere Lokalitäten weniger Programme können gleichzeitig verarbeitet werden. - zu beachten: Working Set ändert sich ständig. 118 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Lösung: Page Fault Frequency Strategie - falls Seitenfehlerrate > oberer Schwellwert: o Allokation zusätzlicher Kacheln. o wenn nicht mögl. Programm verdrängen. - falls Seitenfehlerrate < unterer Schwellwert: o Freigabe von Speicherkacheln. #Seitenfehler Erhöhen der Kachelanzahl obere Grenze untere Grenze Reduzieren der Kachelanzahl #Kacheln 119 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.16 Shared Memory Speicherbereich kann an verschied. log. Adressen eingeblendet werden: Insbesondere bei mehrfach virtualisiertem Speicher. Kacheln gemeinsam nutzen: - Datenaustausch zw. Prozessen, - Redundanz von Code vermeiden. Muss beim Auslagern berücksichtigt werden betrifft auch bei lokalen Strategien andere! Copy-On-Write: - Speicher nur zum Lesen gemeinsam nutzen. - schreibt ein Prozess, so wird die zugehörige Seite kopiert Änderungen für andere unsichtbar. Proz.-1 shared shared - verwendet für Unix fork, globale Variablen in shared libraries und DLLs,... BS Proz.-2 Logischer AR BS M M U Hintergrundspeicher Physikalischer AR 120 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.3.17 Segmente & Paging Kombination von Segmenten mit Paging soll den Nachteil des internen Verschnitts bzw. der externen Speicherfragmentierung mildern. - log. Adr.raums wird in Segmente geteilt. - Segmente werden in Seiten zerlegt. - Segmente können sich eine Kachel teilen. Seitenersetzung aber schwieriger Zweistufiger Speicherschutz auf: - Segmentebene - und Seitenebene. Ausgelagert werden nur Seiten. Beispiel: Intel IA32. - Segmentierung ergibt lineare Adresse, - Paging ergibt physikalische Adresse (PageDirectory & PageTables umfassen jeweils 4KB). GDTR CR3 Segmentselektor LDTR Lokale Deskriptortabelle Globale Deskriptortabelle Page Directory Page Table virtuelle Adresse lineare Adresse SEGMENTIERUNG PAGING physikalische Adresse 121 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.4 Beispiel: Linux 5.4.1 Physikalische Speicherverwaltung Zonen des physischen Adressraums: - ZONE_DMA: für ISA Geräte. - ZONE_NORMAL: Standardzone (direkt für Kern zugreifbar, z.b. für E/A). - ZONE_HIGHMEM: > 896 MB RAM (nur indirekt für den Kern zugänglich). - Zonen-Information siehe auch Befehl dmesg. - pro Zone definierte Schwellwerte (Watermarks): o Balance zwischen Zonen o Auslagern, falls zu wenig freie Kacheln. Verwaltung in Buddy-Technik (pro Zone): - Fragmentierung innerhalb der 2 n -Byte großen Container, - leere Blöcke schnell aggregierbar, - freie Blöcke schnell auffindbar, - alloziert Kacheln fortlaufend (wenn möglich). virtueller Adressrauum 4 GB Kern 3 GB User 0 physikalischer Adressraum ZONE_HIGHMEM 896 MB ZONE_NORMAL 16 MB ZONE_DMA 0 122 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Slab Allocator: - gruppiert vorinitialisierte Objekte (z.b. I-Nodes) gleichen Typs (gleicher Größe), - pro slab eine oder mehrere Speicher-Kacheln vorsehen, - schnelles Auffinden von Blöcken mit passender Größe, - Vorteilhaft zur Allokation von kleinen Objekten, - Speicherallokation in den Größen 2 x (x>5), - leere Slabs auf Anfrage freigeben, - mildert interne Fragmentierung, - Slabs auch in Solaris. "Caches" im Sinne von Behälter: - für einen Objekttyp/-größe, - mehrere slabs pro Cache, - Slabs: voll, partiell gefüllt, leer, Info: - Konsole: cat /proc/slabinfo - Web: osg.informatik.tu-chemnitz.de/ mitarb/robge/talks/slaballocator.pdf 123 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.4.2 Virtuelle Speicherverwaltung Unterteilung des virtuellen Adressraums: - User Mode: 0-3GB (privat pro Prozess), Kernel Mode: 3-4 GB (shared). - Schutz für Kern und Anwendungen durch Segmentdeskriptoren, - nur Demand Paging (kein Pre-Paging), - keine Segmentierung in User-Mode. Insgesamt komplizierte Speicherverwaltung: - dreistufige Seitentabellenstruktur (entwickelt für 64-Bit Alpha). - IA 32 verwendet nur eine zweistufige Tabelle. (Eintrag im Page-Directory wird als mittlere Seitentabelle mit nur einem Eintrag behandelt). Seitenersetzung nach globaler LRU-Strategie: - modifizierter Clock Algorithmus, - Use-Bit erweitert 8-Bit Altersvariable, - beim ersten Zugriff nach einem Taskwechsel wird das Alter erhöht, - Daemon kswapd verringert Alter periodisch (10s) oder bei Bedarf (Watermark), - Code-Kacheln des Kern-Images werden nicht auslagert, - Slabs werden gesondert behandelt (siehe Literatur). Weitergehende Informationen unter: - Understanding the Linux Memory Manager, http://www.skynet.ie/~mel/projects/vm, - Linux Memory Management, http://linux-mm.org. 124 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.5 Beispiel: Windows NT 5.5.1 Physikalische Speicherverwaltung Jede Kachel in einem oder mehreren Working-Sets oder in einer der vier folgenden Speicherlisten. standby list: - unveränderte Seiten, - kürzlich aus Working-Set entfernt. - gehören noch zu einem Prozess. - haben noch original Kopien auf der Platte und können somit einfach entfernt werden. modified list: - veränderte Seiten, - kürzlich aus Working-Set entfernt. - Seiten noch im Hauptspeicher und gehören einem Prozess. free list: - unveränderte Seiten, die keinem Prozess gehören. zeroed pages list: - wie free list, Seiten jedoch mit Nullen aufgefüllt. 125 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Bem.: alle Kacheln, die einen physikalischen Defekt aufweisen sind ebenfalls in einer Liste vermerkt. Kacheln wandern zwischen Working-Sets und verschiedenen Listen. Wird eine Kachel aus WorkingSet verdrängt, kommt sie in die Modified/Standby Liste. Falls eine Seite ausgelagert wird, wird die Kachel in die Free Liste verschoben. BS verschiebt Kacheln zw. den Listen: - von Modified- auf Standby-List, - von Free- auf Zeroed-List. 5.5.2 Virtuelle Speicherverwaltung Unterteilung des Adressraums: - durch Segmente für Kern und Anwendungen. - User Mode: 0-2GB (privat pro Prozess). - Kernel Mode: 2-4 GB (shared). - Paging (ohne Segmentierung). - Demand- und Pre-Paging. 126 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Seitenersetzung: - lokale Strategie: o Clock bei Einzel-CPUs zurücksetzen des Used-Bits bedeutet evt. TLB-Eintrag manuell löschen. o FIFO bei Multiprozessor-Systemen Clock zu teuer, da mehrere TLBs. - Clustering: Beim Einlagern einer Seite werden Nachbarseiten mit eingelagert (Pre-Paging): Data: 0-3 Seiten; Code: 1-7 Seiten - variabel große Working-Sets: o jeder Prozess hat einen Working-Set o MIN: 20-50, MAX: 45-345 Kacheln. o initiale Werte für alle Prozesse gleich, o konfigurierbar mit speziellen Werkzeugen. - evt. WorkingSet (WS) bei einem Seitenfehler anpassen: o WS<MIN: Kachel hinzufügen o WS>MAX: Kachel aus WS entfernen (wird noch nicht ausgelagert) - Bem.: Kern ist in zwei Speicherpools unterteilt, einen mit und einen ohne Seitenersetzung. 127 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

Balance-Set-Manager: - Hintergrundprozess, der ein Mal pro Sek. prüft, ob genügend freie Kacheln vorhanden sind. - Wenn nicht, WorkingSet-Manager starten o passt WS-Größe an und entzieht Kacheln o zunächst inaktive Proz. mit WS>MAX. o Prozesse mit WS<MIN nur im Notfall. o progressiv aggressivere Durchläufe. Zustände der Kacheln eines Prozesses: - Verfügbar: ungenutzte Kacheln. - Reserved: logischer Adressbereich reserviert. - Commited: Kacheln / Platz in Pagefile alloziert. - Vorteil: Kacheln möglichst spät allozieren. Win32 Heaps für Anwendungen: - VMM bietet nur Seitengranularität (z.b. VirtualAlloc). - für effiziente Allokation kleiner Objekte, - i.d.r. in Laufzeitumgebungen. 128 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner

5.6 Zusammenfassung Segmentierung: - Adressübersetzung: Segmentstart + 32-Bit Offset, - variable Größe vermeidet internen Verschnitt, - Schutz: Länge, Zugriffsart, Privilegstufe, - nur beschränkte Anzahl. Paging: - HS in Seiten fester Größe (z.b. 4 KB) unterteilen, - Adressübersetzung: mehrstufig über Seitentabellen (auch auslagerbar), - virt. Speicherblock muss nicht auf fortlaufende Kacheln abgebildet werden vermeidet externe Fragmentierung (im Vergleich zu reiner Segmentierung) IA32: Segmentierung & Paging (abschaltbar) kombinierbar. TLB puffert bereits übersetzte virtuelle Adressen. Ersetzungsstrategien (für Paging & Segmentierung): - verwenden accessed und dirty Bits gesetzt durch MMU und present Bit verwaltet durch BS, - dienen der Analyse des Verhalten in der Vergangenheit, um damit die Zukunft abzuschätzen. Thrashing: Seitenflattern ständig zu wenig Kacheln WorkingSet näherungsweise bestimmen mit Page Fault Frequency Strategie. 129 Betriebssysteme, Sommer 2005 Verteilet Systeme, Universität Ulm, M. Schöttner