Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation."—  Präsentation transkript:

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


Herunterladen ppt "1 Linux Paging, Caching und Swapping. 1 Vortragsstruktur Paging – Das Virtuelle Speichermodell –Die Page Table im Detail –Page Allocation und Page Deallocation."

Ähnliche Präsentationen


Google-Anzeigen