Comment l'MMU traduit les adresses logiques en adresses physiques
Unité de gestion mémoire (MMU) : Traduction d'adresses
L'MMU active la mémoire virtuelle en associant chaque adresse logique (virtuelle) d'un processus à une trame de RAM physique.
Pas à pas (Table de pages multiniveau style x86)
- Découpage adresse logique (ex: 32-bit, pages 4 Ko) :
- Index répertoire pages (10 bits) → sélectionne PDE dans Répertoire Pages (registre CR3).
- Index table pages (10 bits) → sélectionne PTE dans Table Pages.
- Décalage page (12 bits) → décalage octet dans la trame 4 Ko.
- Recherche Répertoire Pages : MMU lit PDE. Si Present=0 → Défaut de page (OS charge page depuis disque).
- Recherche Table Pages : MMU lit PTE. Si Present=0 → Défaut de page.
- Adresse trame physique : PTE contient Numéro Page Physique (PPN) (20 bits de poids fort).
- Combinaison : Adresse Physique = (PPN << 12) | Décalage Page.
- Cache TLB : Translation Lookaside Buffer met en cache mappings récents (VPN → PPN) pour sauter parcours pages sur hits (~99 % taux hit).
Structures clés
- CR3 (PDBR) : Adresse physique du Répertoire Pages du processus courant.
- Drapeaux PDE/PTE : Present, Read/Write, User/Supervisor, Write-Through, Cache-Disable, Accessed, Dirty, Global, NX (No-Execute).
- Gestionnaire défaut page (OS) : Alloue trame, met à jour PTE, reprend instruction.
Extensions
- PAE (36-bit) : 3 niveaux, pages grandes 2 Mo/4 Mo.
- x86-64 (4 niveaux) : PML4 → PDPT → PD → PT → page 4 Ko (virtuel 48-bit).
- ARMv8 : 4 niveaux similaires (TTBR0/1), granulaires 4 Ko/16 Ko/64 Ko.
Résultat : Chaque processus voit un espace d'adressage contigu 0–4 Go (32-bit) ou 0–256 To (48-bit), isolé et plus grand que la RAM physique.
