Skip to content
9. Virtual Memory
1

Virtual Memory und Paging

10.05.2024
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
  • Bei Zugriff auf ausgelagerte Pages erfolgt ein "Page Fault"
10.05.2024
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.
10.05.2024
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
10.05.2024
9. Virtual Memory
5

Virtual zu Physical Memory Paging

10.05.2024
9. Virtual Memory
6

Virtual zu Physical Memory Paging

10.05.2024
9. Virtual Memory
7

Einzelner Page Table Eintrag eines Prozesses

validdirtyresult
truetrueSeite gültig (Paged auf phys. Memory)
falsefalseSegmentation Violation (SEGV) führt zu Programmabruch
truefalsePage Fault: On Demand Paging
fasletruePage Fault: Seite im Swap
10.05.2024
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)
10.05.2024
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
10.05.2024
9. Virtual Memory
10

Swapping

  • Bei DRAM-Knappheit werden Pages auf eine Blockdevice ausgelagert. Bei Embedded meistens wegen Flashspeicher ausgeschaltet.
10.05.2024
9. Virtual Memory
11

Page Directories und Page Tables

10.05.2024
9. Virtual Memory
12

Page Directories

10.05.2024
9. Virtual Memory
13

Page Tables: Hirarchie

10.05.2024
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
10.05.2024
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
10.05.2024
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 oder copy_from_user
  • mmap auf die Disk
    • wird bei shared / static Libs verwendet um zu pagen
10.05.2024
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
10.05.2024
9. Virtual Memory
18

Wie lange dauert ...

Dauer
Librarycall~ 2ns ... 10ns
Systemcall~ 200ns
context switch eines Prozesses~ 1200 ns
fork()100us ... 150us
pthread create50us ... 100us
10.05.2024