Linux Paging, Caching und Swapping



Ähnliche Dokumente
Quiz. Gegeben sei ein 16KB Cache mit 32 Byte Blockgröße. Wie verteilen sich die Bits einer 32 Bit Adresse auf: Tag Index Byte Offset.

Linux Memory Management für MySQL

Vorlesung: Rechnerstrukturen, Teil 2 (Modul IP7)

RO-Tutorien 15 und 16

8. Swapping und Virtueller Speicher

Virtueller Speicher und Memory Management

Betriebssysteme Teil 10 B: Fragen rund um Seitenfehler

Speicherverwaltung (Swapping und Paging)

Cache Grundlagen. Schreibender Cache Zugriff. SS 2012 Grundlagen der Rechnerarchitektur Speicher 22

Tutorium Rechnerorganisation

Technische Informatik II Wintersemester 2002/03 Sommersemester Heiko Holtkamp

Wunschvorstellung der Entwickler vom Speicher

Virtueller Speicher WS 2011/2012. M. Esponda-Argüero

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

Wie groß ist die Page Table?

Cache Blöcke und Offsets

Zwei Möglichkeiten die TLB zu aktualisieren

Echtzeitbetriebssysteme

(Cache-Schreibstrategien)

Lösung von Übungsblatt 2

Speicher- und Cacheverwaltung unter Linux. Ralf Petring & Guido Schaumann

, 2014W Übungsgruppen: Mo., Mi.,

Konzepte von Betriebssystemkomponenten Referat am Thema: Adressräume, Page Faults, Demand Paging, Copy on Write Referent: Johannes Werner

Virtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44

Teil 2: Speicherstrukturen

Lösung von Übungsblatt 2

Technische Realisierung (1)

7. Speicherverwaltung

Hauptspeicherverwaltung - Memory Management

Speicherverwaltung. Design Digitaler Systeme. Prof. Dr.-Ing. Rainer Bermbach

Rechnernetze und Organisation

Besprechung des 9. Übungsblattes Virtuelle Speicherverwaltung Aufgaben

Analyse aktueller Cache-Architekturen hinsichtlich Struktur und Effizienz. Markus Krause

(Prüfungs-)Aufgaben zum Thema Speicherverwaltung

Abbilden von virtuellen auf physikalische Adressen

Technische Informatik 2 Speichersysteme, Teil 3

Lösung von Übungsblatt 5

Memory Management. Peter Puschner Institut für Technische Informatik

Betriebssysteme 1. Thomas Kolarz. Folie 1

Rechnerarchitektur und Betriebssysteme (CS201): Virtual Memory

Proseminar Konzepte von Betriebssystem- Komponenten (KVBK) Vortrag zum Thema: Speicheraddressierung, Segmentierung, Paging

Aufgabe 4 : Virtueller Speicher

Übung zu Einführung in die Informatik # 10

Betriebssysteme. Speicherverwaltung - Grundlegende Konzepte. Sommersemester 2014 Prof. Dr. Peter Mandl. Prof. Dr. Peter Mandl Seite 1.

Übung zu Grundlagen der Betriebssysteme. 14. Übung

Übung Praktische Informatik II

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Grundlagen der Rechnerarchitektur. Speicher

5.5 Virtueller Speicher

Technische Informatik 1 - HS 2017

Rechnergrundlagen SS Vorlesung

Speicherhierarchie, Caches, Consistency Models

5.5.5 Der Speicherverwalter

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

Betriebssysteme Kap J, Teil C: Paging, Pagereplacement

Computer-Systeme Teil 15: Virtueller Speicher

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

Betriebssysteme KU - Bewertung A2 - WS 15/16

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

wichtigstes Betriebsmittel - neben dem Prozessor: Speicher

Betriebssysteme Sommersemester Betriebssysteme. 5. Kapitel. Adressumsetzung. Dr. Peter Tröger / Prof. M. Werner. Professur Betriebssysteme

Linux. Memory-Verwaltung unter Linux - Mythen aus der Praxis. Thorsten Bruhns Solution Architect. OPITZ CONSULTING GmbH. Nürnberg,

Konzepte von Betriebssystemkomponenten

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

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

Betriebssysteme Betriebssysteme und. Netzwerke. Netzwerke Theorie und Praxis

Leichtgewichtsprozesse

Memory Management, Virtual Memory Tanenbaum Kap. 3 Stallings Kap. 7, 8 Glatz Kap. 7

Transkript:

Linux Paging, Caching und Swapping

Inhalte Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches Swapping Welche Pages eines Prozesses werden ausgelagert Der Kernel Swap Demon (kswapd) Freimachen von Speicherseiten

Prozeß VPFN 3 VPFN 2 VPFN VPFN 0 PFN 7 PFN 6 PFN 5 PFN 4 PFN 3 PFN 2 PFN PFN 0 Prozeß 2 VPFN 2 VPFN VPFN 0 Virtuelle Speicherseite eines Prozesses Physische Speicherseite eines Prozesses Physische Speicherseite die von mehreren Prozessen gemeinsam genutzt wird

Prozeß PFN 7 PFN 6 Prozeß 2 VPFN 3 VPFN 2 VPFN PFN 5 PFN 4 PFN 3 PFN 2 PFN VPFN 2 VPFN VPFN 0 PFN 0 Page Table Page Table VPFN 0 Virtuelle Speicherseite eines Prozesses Physische Speicherseite eines Prozesses Physische Speicherseite die von mehreren Prozessen gemeinsam genutzt wird Page Table

Virtuell Physisch Page-Größe bei ix86 Systemen beträgt 4 Kilobyte, also 0x000 B. Virtuelle Adresse 0x00484456 Prozessor extrahiert Offset und VPFN Physische Adresse 0x00089456 Prozessor generiert physische Adresse und greift darauf zu VPFN 0x484 Page Offset 0x456 Prozessor greift auf Page Table 0x484 zu PFN 0x89 Page Offset 0x456

Inhalt Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches Swapping Welche Pages eines Prozesses werden ausgelagert Der Kernel Swap Demon (kswapd) Freimachen von Speicherseiten

Ein einzelner Page Table Eintrag eines Prozesses V Zugriffsrechte D PFN Valid Flag Page Dirty Flag

Ein einzelner Page Table Eintrag eines Prozesses V Zugriffsrechte D PFN Valid Flag Page Dirty Flag Valid gesetzt & PFN gesetzt Seite vorhanden Valid gelöscht & PFN gelöscht Seite ungültig (Page fault)

Ein einzelner Page Table Eintrag eines Prozesses V Zugriffsrechte D PFN Valid Flag Page Dirty Flag Valid gesetzt & PFN gesetzt Seite vorhanden Valid gelöscht & PFN gelöscht Seite ungültig (Page fault) Valid gesetzt & PFN gelöscht Page fault: Demand Paging Valid gelöscht & PFN gesetzt Page fault: Seite im Swap

Ein einzelner Page Table Eintrag eines Prozesses V Zugriffsrechte D PFN Valid Flag Page Dirty Flag Eine neue Page wird geladen Page wird geändert (beschrieben) Page wird nicht beschrieben Page wird dringend für einen anderen Prozeß benötigt Page wird auf Datenträger ausgelagert in den Swap Bereich Seite wird verworfen

Level Level 2 Level 3 Byte in Seite PFN PFN PFN Adresse PGD Physische Seite PGD: Page Global Directory.Vom Kernel initialisiert. Weist auf den ersten Page Table Level.

Inhalt Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches Swapping Welche Pages eines Prozesses werden ausgelagert Der Kernel Swap Demon (kswapd) Freimachen von Speicherseiten

mem_map_t oder auch Page Struktur: count Anzahl der Benutzer, die die Seite benutzen age Alter der Seite. Entscheidet, ob die Seite verworfen bzw. ausgelagert wird, wenn wieder Speicherplatz benötigt wird. map_nr Physische PFN

free_area Vektor 5 4 3 2 0... 8 7 6 5 4 3 2 PFN 0 Freie Speicherseite im Hauptspeicher (nicht alloziert)

free_area Vektor 5 mem_map Struktur 4 3 4 2 0 0 mem_map_t... 8 7 6 5 4 3 2 PFN 0 Freie Speicherseite im Hauptspeicher (nicht alloziert)

free_area Vektor 5 mem_map Struktur 4 map Bitmaps 3 4 2 0 0 mem_map_t... 8 7 6 5 4 3 2 PFN 0 Freie Speicherseite im Hauptspeicher (nicht alloziert)

Inhalt Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping und Demand Paging Caching Die verschiedenen Caches Swapping Welche Pages eines Prozesses werden ausgelagert Der Kernel Swap Demon (kswapd) Freimachen von Speicherseiten

mm_struct vm_area_struct vm_end vm_start vm_ops Virtueller Speicher des Prozesses z.b. Code z.b. initialisierte Daten (Variablen).. Demand Paging Valid gesetzt & PFN gelöscht

Inhalt Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches Swapping Welche Pages eines Prozesses werden ausgelagert Der Kernel Swap Demon (kswapd) Freimachen von Speicherseiten

Buffer Cache Page Cache Swap Cache Hardware Caches TLB (Translation Look-aside Buffers)

Buffer Cache Block-Gerätetreiber Block wird geladen Geräte-ID, Blocknummer 2 kb 2 kb 2 kb 2 kb 2 kb Hardware: Blockgerät (Festplatte)

Page Cache Page fault handling code Pointer auf mem_map_t Datei, Datenoffset page_hash_table (single-page read ahead) mem_map_t mem_map_t mem_map_t mem_map_t mem_map_t Page Page Page Page Page Festplatte

Swap Cache Seite wird aus Swap File gelesen Swap Cache erzeugt Page Table Entry (Swap File, Offset)

Swap Cache Seite wird aus Swap File gelesen Swap Cache erzeugt Page Table Entry (Swap File, Offset) Page wird geändert (beschrieben) Page wird nicht beschrieben Swap Cache löscht den Page Table Entry

Swap Cache Seite wird aus Swap File gelesen Swap Cache erzeugt Page Table Entry (Swap File, Offset) Page wird geändert (beschrieben) Page wird nicht beschrieben Swap Cache löscht den Page Table Entry Seite soll ins Swap File ausgelagert werden

Swap Cache Seite wird aus Swap File gelesen Swap Cache erzeugt Page Table Entry (Swap File, Offset) Page wird geändert (beschrieben) Page wird nicht beschrieben Swap Cache löscht den Page Table Entry Seite soll ins Swap File ausgelagert werden Seite nicht im Cache Page wird in Swap File geschrieben Seite im Cache Seite wird verworfen. Grosse Zeitersparnis

Hardware Caches TLB (Translation Look-aside Buffers) CPU (Prozessor) OS (Linux) TLB

Hardware Caches TLB (Translation Look-aside Buffers) CPU (Prozessor) Exception TLB miss OS (Linux) TLB neuer TLB

Hardware Caches TLB (Translation Look-aside Buffers) CPU (Prozessor) TLB exception bearbeitet OS (Linux)

Inhalt Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches Swapping Welche Pages eines Prozesses werden ausgelagert Der Kernel Swap Demon (kswapd) Freimachen von Speicherseiten

Prozess mit Seiten im physischen Speicher PFN 7 PFN 6 PFN 5 PFN 4 PFN 3 PFN 2 PFN PFN 0 Working Set eines Prozesses

Prozess mit Seiten im physischen Speicher PFN 7 PFN 6 PFN 5 PFN 4 PFN 3 PFN 2 PFN PFN 0 mem_map_t count age map_nr count age map_nr Working Set eines Prozesses

Prozess mit Seiten im physischen Speicher PFN 7 PFN 6 PFN 5 PFN 4 PFN 3 PFN 2 PFN PFN 0 mem_map_t count age map_nr count age map_nr Least Recently Used (LRU) Technik zur Bestimmung des Seitenalters Working Set eines Prozesses Linux

LRU im Detail: Seite wird alloziert Das Alter wird gesetzt auf: age = 3 Seitenzugriff Das Alter wird um 3 eröht, Maximalwert ist 20 kswapd prüft das Alter Das Alter wird um reduziert. Wenn 0 erreicht wird, gilt die Seite als alt.

Inhalt Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches Swapping Welche Pages eines Prozesses werden ausgelagert Der Kernel Swap Demon (kswapd) Freimachen von Speicherseiten

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_high und free_pages_low werden initialisiert

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_low und free_pages_high werden initialisiert Anzahl freier Seiten unter free_pages_low? nein

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_low und free_pages_high werden initialisiert Anzahl freier Seiten unter free_pages_low? nein Anzahl freier Seiten unter free_pages_high? nein

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_low und free_pages_high werden initialisiert Anzahl freier Seiten unter free_pages_low? nein Anzahl freier Seiten unter free_pages_high? nein Don t Panic

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_low und free_pages_high werden initialisiert Anzahl freier Seiten unter free_pages_low? nein Anzahl freier Seiten unter free_pages_high? ja nein Don t Panic

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_low und free_pages_high werden initialisiert Anzahl freier Seiten unter free_pages_low? nein Anzahl freier Seiten unter free_pages_high? ja nein 3 Seiten freimachen Don t Panic

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_low und free_pages_high werden initialisiert Anzahl freier Seiten unter free_pages_low? ja nein Anzahl freier Seiten unter free_pages_high? ja nein 3 Seiten freimachen Don t Panic

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_low und free_pages_high werden initialisiert ja Anzahl freier Seiten unter free_pages_low? nein 6 Seiten freimachen Nur halbe Zeitspanne schlafen Anzahl freier Seiten unter free_pages_high? ja nein 3 Seiten freimachen Don t Panic

Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_low und free_pages_high werden initialisiert ja Anzahl freier Seiten unter free_pages_low? nein 6 Seiten freimachen Nur halbe Zeitspanne schlafen Anzahl freier Seiten unter free_pages_high? ja nein 3 Seiten freimachen Don t Panic Zuletzt benutzte Methode wiederbenutzen:.) Page- und Buffer-Cache Seiten reduzieren (z.b. Memory Mapped Files, Festplattendaten) 2.) System V Shared Memory Seiten auslagern (Swap File) 3.) Speicherseiten auslagern (Swap File)

Inhalt Paging Das Virtuelle Speichermodell Die Page Table im Detail Page Allocation und Page Deallocation Memory Mapping & Demand Paging Caching Die verschiedenen Caches Swapping Welche Pages eines Prozesses werden ausgelagert Der Kernel Swap Demon (kswapd) Freimachen von Speicherseiten

.) Page- und Buffer-Cache Seiten reduzieren (z.b. Memory Mapped Files, Festplattendaten) Kein Swapping (Datenträgerzugriff) nötig! mem_map mem_map_t Physische Seiten clock Algorithmus

2.) System V Shared Memory Seiten auslagern (Swap File) clock Algorithmus Physische Seiten Prozeß A Prozeß B Prozeß C

2.) System V Shared Memory Seiten auslagern (Swap File) clock Algorithmus Physische Seiten Page Tables Prozeß A Prozeß B Prozeß C

2.) System V Shared Memory Seiten auslagern (Swap File) clock Algorithmus Physische Seiten Page Tables Prozeß A Prozeß B Prozeß C Page Table Eintrag invalid setzen PFN auf Swapposition setzen (Datei, Offset) User Count für die Seite um reduzieren (mem_map_t) Wenn User Count = 0, dann Seite swappen

3.) Speicherseiten auslagern (Swap File) kswapd Darf Prozeß geswappt werden? Prozeß A Prozeß B Prozeß C

3.) Speicherseiten auslagern (Swap File) kswapd Darf Prozeß geswappt werden? Prozeß A Prozeß B Prozeß C Dürfen Seiten geswappt werden? (nicht locked / shared)

3.) Speicherseiten auslagern (Swap File) kswapd Darf Prozeß geswappt werden? Prozeß A Prozeß B Prozeß C Dürfen Seiten geswappt werden? (nicht locked / shared) Muß eine Seite geswappt werden oder kann man sie einfach verwerfen? (Können die Informationen anders wiederhergestellt werden?)

3.) Speicherseiten auslagern (Swap File) kswapd Darf Prozeß geswappt werden? Prozeß A Prozeß B Prozeß C Dürfen Seiten geswappt werden? (nicht locked / shared) Muß eine Seite geswappt werden oder kann man sie einfach verwerfen? (Können die Informationen anders wiederhergestellt werden?) Seite verwerfen Einige wenige Seiten wählen Seiten ins Swap File auslagern

Ende Linux Paging, Caching und Swapping