Appearance
9. Virtual Memory
2
Paging #
- Der Hauptspeicher wird in Pages fixer Grösse verwaltet
- Die Pagesize ist üblicherweise 4kB
- Meistens nur Kernel-Intern werden Huge Pages a z.B. 2MB verwendet vgl.
cat /proc/meminfo
- Meistens nur Kernel-Intern werden Huge Pages a z.B. 2MB verwendet vgl.
- Bei Zugriff auf ausgelagerte Pages erfolgt ein "Page Fault"
16.05.2023
9. Virtual Memory
3
Paging: Page Faults #
- Bei einem File: Daten sind noch nicht im Physical Memory sondern auf der Disk
- Page Faults werden durch den Kernel behandelt.
16.05.2023
9. Virtual Memory
4
Paging Mechanismus #
- Jeder Prozess hat einen eigenen VM Space (vgl.
cat /proc/<PID>/maps
) - Die Umsetzung des Pagings erfolgt HW-Unterstützt durch MMU (Memory Management Unit / Paging Unit)
- Paging = Zuordnung VM => PM
16.05.2023
9. Virtual Memory
7
Einzelner Page Table Eintrag eines Prozesses #
valid | dirty | result |
---|---|---|
true | true | Seite gültig (Paged auf phys. Memory) |
false | false | Segmentation Violation (SEGV) führt zu Programmabruch |
true | false | Page Fault: On Demand Paging |
fasle | true | Page Fault: Seite im Swap |
16.05.2023
9. Virtual Memory
8
Vorteile von Memory Paging #
- Keine Fragmentierung des physical Memory
- Speicherbereich in der App muss in phys. Memory nicht zusammenhängen
- Protected Memory: Prozesse und Kernel geschützt vor einander.
- On Demand Paging (Einlagern erst bei Bedarf)
- ... findet bei dynamischen und statischen Libs statt
- Copy on Write: Sobald in einen eingelagerten Bereich geschrieben wird, erstellt der Kernel eine Kopie im physical Memory
- Readonly: Physical Memory ist shared (die App weiss das aber nicht)
16.05.2023
9. Virtual Memory
9
Page-Cache #
- Diskzugriffe werden in Pages gecached und bleiben auch nach dem Zugriff im Memory erhalten.
- ... das gesamte DRAM dient so als Buffer, um Zugriffe auf die Disk zu beschleunigen
16.05.2023
9. Virtual Memory
10
Swapping #
- Bei DRAM-Knappheit werden Pages auf eine Blockdevice ausgelagert. Bei Embedded meistens wegen Flashspeicher ausgeschaltet.
16.05.2023
9. Virtual Memory
14
Page Directory und Page Tables #
- Mapt physikalische Adresse auf virtuelle Adresse
- Liegen immer im RAM und können nicht ausgelagert werden
- Hierarchisch um Platz zu sparen
16.05.2023
9. Virtual Memory
15
MMU #
- Kann max ~ 1000 Pagetable-Einträge halten
- ... im sogenanten Translation Lookaside Buffer (TLB)
- sehr schneller Lookup ~1 Clock Cylce
- ein Process- / Taskswitch auf der CPU erfordert einen "TLB-Flush" aufgrund Wechsel der Pagetable => Zeitaufwändig
16.05.2023
9. Virtual Memory
16
mmap()
Systemcall #
- Im Vergleich zu
read
/write
viel performanter- Nutzt ein Treiber
mmap
werden die Daten nicht kopiert sondern gepaged. - ansonsten immer
copy_to_user
odercopy_from_user
- Nutzt ein Treiber
- mmap auf die Disk
- wird bei shared / static Libs verwendet um zu pagen
16.05.2023
9. Virtual Memory
17
Protected Mode #
- Speicherschutz
- Schutz des Kernels und Peripherie (Reg. liegen im Physical Memory)
- Hardwareunterstützt
- OS mit Virtual Memory Management / Paging
- Memory Management Unit
- CPU mit min. 2 Privilege Levels
- Kernel läuft auf mit max Privileges
16.05.2023
9. Virtual Memory
18
Wie lange dauert ... #
Dauer | |
---|---|
Librarycall | ~ 2ns ... 10ns |
Systemcall | ~ 200ns |
context switch eines Prozesses | ~ 1200 ns |
fork() | 100us ... 150us |
pthread create | 50us ... 100us |
16.05.2023