Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Kunibert Schieferstein Geändert vor über 10 Jahren
1
1 Linux Paging, Caching und Swapping
2
1 Vortragsstruktur 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
3
1 VPFN 3 VPFN 2 VPFN 1 VPFN 0 VPFN 2 VPFN 1 VPFN 0 PFN 7 PFN 6 PFN 5 PFN 4 PFN 3 PFN 2 PFN 1 PFN 0 Prozeß 1Prozeß 2 Virtuelle Speicherseite eines Prozesses Physische Speicherseite eines Prozesses Physische Speicherseite die von mehreren Prozessen gemeinsam genutzt wird
4
1 VPFN 3 VPFN 2 VPFN 1 VPFN 0 VPFN 2 VPFN 1 VPFN 0 PFN 7 PFN 6 PFN 5 PFN 4 PFN 3 PFN 2 PFN 1 PFN 0 Prozeß 1Prozeß 2 Page Table Virtuelle Speicherseite eines Prozesses Physische Speicherseite eines Prozesses Physische Speicherseite die von mehreren Prozessen gemeinsam genutzt wird Page Table
5
1 VirtuellPhysisch Virtuelle Adresse 0x00484456 Page-Größe bei ix86 Systemen beträgt 4 Kilobyte, also 0x1000 B. VPFN 0x484 Page Offset 0x456 PFN 0x89 Page Offset 0x456 Physische Adresse 0x00089456 Prozessor extrahiert Offset und VPFN Prozessor greift auf Page Table 0x484 zu Prozessor generiert physische Adresse und greift darauf zu
6
1 Vortragsstruktur 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
7
1 Ein einzelner Page Table Eintrag eines Prozesses VZugriffsrechteDPFN Valid Flag Page Dirty Flag
8
1 Ein einzelner Page Table Eintrag eines Prozesses VZugriffsrechteDPFN Valid Flag Page Dirty Flag Valid gesetzt Valid gelöschtPFN gelöscht PFN gesetztSeite vorhanden Seite ungültig (Page fault) & &
9
1 Ein einzelner Page Table Eintrag eines Prozesses VZugriffsrechteDPFN Valid Flag Page Dirty Flag Valid gesetztPFN gelöscht Valid gelöschtPFN gesetzt Valid gesetzt Valid gelöschtPFN gelöscht PFN gesetztSeite vorhanden Seite ungültig (Page fault) Page fault: Demand Paging Page fault: Seite im Swap & & & &
10
1 Ein einzelner Page Table Eintrag eines Prozesses VZugriffsrechteDPFN Valid Flag Page Dirty Flag Eine neue Page wird geladen Page wird geändert (beschrieben) Page wird auf Datenträger ausgelagert in den Swap Bereich Page wird dringend für einen anderen Prozeß benötigt Seite wird verworfen Page wird nicht beschrieben
11
1 Level 1Level 2Level 3Byte in Seite PFN Adresse PGD PGD: Page Global Directory.Vom Kernel initialisiert. Weist auf den ersten Page Table Level. Physische Seite
12
1 Vortragsstruktur 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
13
1 count age map_nr mem_map_t oder auch Page Struktur: Anzahl der Benutzer, die die Seite benutzen Alter der Seite. Entscheidet, ob die Seite verworfen bzw. ausgelagert wird, wenn wieder Speicherplatz benötigt wird. Physische PFN
14
1 0 1 2 3 4 5 PFN 0 1 2 3 4 5 6 7 8... Freie Speicherseite im Hauptspeicher (nicht alloziert) free_area Vektor
15
1 4 0 0 1 2 3 4 5 PFN 0 1 2 3 4 5 6 7 8... Freie Speicherseite im Hauptspeicher (nicht alloziert) mem_map Struktur free_area Vektor mem_map_t
16
1 4 0 0 1 2 3 4 5 PFN 0 1 2 3 4 5 6 7 8... Freie Speicherseite im Hauptspeicher (nicht alloziert) mem_map Struktur free_area Vektor mem_map_t map Bitmaps
17
1 Vortragsstruktur 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
18
1 vm_ops vm_end vm_start mm_structvm_area_struct z.B. Code z.B. initialisierte Daten (Variablen).. Virtueller Speicher des Prozesses Valid gesetztPFN gelöscht Demand Paging &
19
1 Vortragsstruktur 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
20
1 Buffer Cache Page Cache Swap Cache Hardware CachesTLB (Translation Look-aside Buffers)
21
1 Buffer Cache Block-Gerätetreiber 2 kB Geräte-ID, Blocknummer Hardware: Blockgerät (Festplatte) Block wird geladen
22
1 Page Cache Page fault handling code Page Datei, Datenoffset Festplatte Pointer auf mem_map_t (single-page read ahead) page_hash_table mem_map_t
23
1 Swap Cache Seite wird aus Swap File gelesen Swap Cache erzeugt Page Table Entry (Swap File, Offset)
24
1 Swap Cache Seite wird aus Swap File gelesen Page wird geändert (beschrieben) Swap Cache erzeugt Page Table Entry (Swap File, Offset) Page wird nicht beschrieben Swap Cache löscht den Page Table Entry
25
1 Swap Cache Seite wird aus Swap File gelesen Page wird geändert (beschrieben) Swap Cache erzeugt Page Table Entry (Swap File, Offset) Page wird nicht beschrieben Swap Cache löscht den Page Table Entry Seite soll ins Swap File ausgelagert werden
26
1 Swap Cache Seite wird aus Swap File gelesen Page wird geändert (beschrieben) Page wird in Swap File geschrieben Swap Cache erzeugt Page Table Entry (Swap File, Offset) Seite wird verworfen. Grosse Zeitersparnis Page wird nicht beschrieben Swap Cache löscht den Page Table Entry Seite nicht im CacheSeite im Cache Seite soll ins Swap File ausgelagert werden
27
1 Hardware CachesTLB (Translation Look-aside Buffers) CPU (Prozessor) TLB OS (Linux)
28
1 Hardware CachesTLB (Translation Look-aside Buffers) CPU (Prozessor) TLB OS (Linux) Exception TLB miss neuer TLB
29
1 Hardware CachesTLB (Translation Look-aside Buffers) CPU (Prozessor) TLB OS (Linux) exception bearbeitet
30
1 Vortragsstruktur 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
31
1 PFN 3 PFN 2 PFN 1 PFN 0 PFN 7 PFN 6 PFN 5 PFN 4 Working Set eines Prozesses Prozess mit Seiten im physischen Speicher
32
1 PFN 3 PFN 2 PFN 1 PFN 0 PFN 7 PFN 6 PFN 5 PFN 4 Working Set eines Prozesses count age map_nr count age map_nr mem_map_t Prozess mit Seiten im physischen Speicher
33
1 PFN 3 PFN 2 PFN 1 PFN 0 PFN 7 PFN 6 PFN 5 PFN 4 Working Set eines Prozesses Least Recently Used (LRU) Technik zur Bestimmung des Seitenalters count age map_nr count age map_nr mem_map_t Linux Prozess mit Seiten im physischen Speicher
34
1 LRU im Detail: Seite wird alloziertDas 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 1 reduziert. Wenn 0 erreicht wird, gilt die Seite als alt.
35
1 Vortragsstruktur 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
36
1 Systeminitialisierung kswapd wird geladen Kernel Swap Timer wird initialisiert free_pages_high und free_pages_low werden initialisiert
37
1 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
38
1 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? Anzahl freier Seiten unter free_pages_high? nein
39
1 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? Anzahl freier Seiten unter free_pages_high? nein Dont Panic
40
1 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? Anzahl freier Seiten unter free_pages_high? nein ja Dont Panic
41
1 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? Anzahl freier Seiten unter free_pages_high? nein ja Dont Panic3 Seiten freimachen
42
1 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? Anzahl freier Seiten unter free_pages_high? nein ja Dont Panic3 Seiten freimachen ja
43
1 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? Anzahl freier Seiten unter free_pages_high? nein ja Dont Panic3 Seiten freimachen 6 Seiten freimachen Nur halbe Zeitspanne schlafen
44
1 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? Anzahl freier Seiten unter free_pages_high? nein ja Dont Panic3 Seiten freimachen 6 Seiten freimachen Nur halbe Zeitspanne schlafen Zuletzt benutzte Methode wiederbenutzen: 1.) 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)
45
1 Vortragsstruktur 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
46
1 1.) Page- und Buffer-Cache Seiten reduzieren (z.B. Memory Mapped Files, Festplattendaten) Kein Swapping (Datenträgerzugriff) nötig! mem_mapmem_map_tPhysische Seiten clock Algorithmus
47
1 2.) System V Shared Memory Seiten auslagern (Swap File) Physische Seiten clock Algorithmus Prozeß A Prozeß B Prozeß C
48
1 2.) System V Shared Memory Seiten auslagern (Swap File) Physische Seiten clock Algorithmus Page Tables Prozeß A Prozeß B Prozeß C
49
1 2.) System V Shared Memory Seiten auslagern (Swap File) Physische Seiten clock Algorithmus 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 1 reduzieren (mem_map_t) Wenn User Count = 0, dann Seite swappen
50
1 3.) Speicherseiten auslagern (Swap File) kswapd Prozeß AProzeß BProzeß C Darf Prozeß geswappt werden?
51
1 3.) Speicherseiten auslagern (Swap File) kswapd Prozeß AProzeß BProzeß C Darf Prozeß geswappt werden? Dürfen Seiten geswappt werden? (nicht locked / shared)
52
1 3.) Speicherseiten auslagern (Swap File) kswapd Prozeß AProzeß BProzeß C Darf Prozeß geswappt werden? 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?)
53
1 3.) Speicherseiten auslagern (Swap File) kswapd Prozeß AProzeß BProzeß C Darf Prozeß geswappt werden? 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 verwerfenEinige wenige Seiten wählen Seiten ins Swap File auslagern
54
1 Vortragsende Linux Paging, Caching und Swapping
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.