Skip to content
9. Virtual Memory
1

Virtual Memory und Paging ​

05.03.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"
05.03.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.
05.03.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
05.03.2024
9. Virtual Memory
5

Virtual zu Physical Memory Paging ​

05.03.2024
9. Virtual Memory
6

Virtual zu Physical Memory Paging ​

05.03.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
05.03.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)
05.03.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
05.03.2024
9. Virtual Memory
10

Swapping ​

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

Page Directories und Page Tables ​

05.03.2024
9. Virtual Memory
12

Page Directories ​

05.03.2024
9. Virtual Memory
13

Page Tables: Hirarchie ​

05.03.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
05.03.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
05.03.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
05.03.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
05.03.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
05.03.2024