• ↑↓ pour naviguer
  • pour ouvrir
  • pour sélectionner
  • ⌘ ⌥ ↵ pour ouvrir dans un panneau
  • ←→ pour naviguer
  • esc pour rejeter
⌘ '
raccourcis clavier

The Problem

Programs need more memory than physically available, and we want isolation between processes (one process shouldn’t access another’s memory). Physical RAM alone can’t provide this.

Core Idea

Virtual memory gives each process the illusion of a large, contiguous address space, mapped to physical RAM via paging, with unused pages stored on disk (swap).

How It Works

  1. Each process has its own virtual address space (e.g., 4GB on 32-bit)
  2. Virtual pages mapped to physical frames via page table
  3. Pages not in RAM are stored in swap space on disk
  4. Access to swapped-out page causes page fault → OS loads it
  5. Processes isolated (can’t access other process’s pages)
vm cluster_proc1 Process A (Virtual) cluster_proc2 Process B (Virtual) VA1 Virtual 0..4GB MMU MMU + Page Tables maps virtual → physical VA1->MMU VA2 Virtual 0..4GB VA2->MMU RAM Physical RAM (frames) MMU->RAM Swap Swap Space (disk) MMU->Swap page fault

Key Properties

  • Isolation: each process has separate address space
  • Overcommit: can allocate more virtual memory than physical RAM
  • Demand paging: pages loaded only when accessed
  • Enables swap space to extend RAM

Connections

Edge Cases & Gotchas

  • Thrashing: too much swapping, system becomes very slow
  • OOM killer: Linux kills processes when memory exhausted
  • Swap on SSD wears out flash cells