160 likes | 328 Views
Simple OS La Pagination. Benoit LAMOTTE. D’après l’article Conception d’OS : mise en place de la pagination , Linux magazine n°65 page 42, David Decotigny & Thomas Petazzoni. Sommaire. Principe de la memoire virtuel Objectifs Traduction d’adresses Architecture x86 Petit rappel
E N D
Simple OSLa Pagination Benoit LAMOTTE D’après l’article Conception d’OS : mise en place de la pagination,Linux magazine n°65 page 42,David Decotigny & Thomas Petazzoni.
Sommaire • Principe de la memoire virtuel • Objectifs • Traduction d’adresses • Architecture x86 • Petit rappel • Adresse Linéaire • Répertoire et table des pages • Identity mapping • Modification des tables de traduction d’adresses • Simple OS • Le mirroring • Le fonctionnement : la mise en place de la pagination
Principe de la memoire virtuelleObjectifs • Avant : • Programmer en fonction de la mémoire disponible • Après : • Mémoire disponible « infinie »
Principe de la memoire virtuelleObjectifs • Comment est-ce possible ? • Utilisation des autres ressources. • RAM utilisé pour stocker les données les plus utilisées.
Principe de la memoire virtuelleTraduction d’adresses • Prise en charge par la MMU RAM Bus de données Bus de données CPU MMU Adresses fictives AdressesRAM Exception MMU
Principe de la memoire virtuelleTraduction d’adresses MMU CPU Adresse fictive Accès à une donnéeChargement d’un instruction Il existe une traduction en RAM? non oui Utilisation des donnéesExécution de l’instruction Bus de donnéesMémoire Accès à la RAM Exception OS Données/instructionsur le bus de données La donnée/instructionest stockée ailleurs ? oui non Transfert versla RAM Signale accès invalide à l’application fautive Nouvelle traduction communiquée à la MMU
Architecture x86Petit Rappel • MMU gère la segmentation et la pagination • Adresse logique -> adresse linéaire par la segmentation • Adresse linéaire -> adresse physique par la pagination de la MMU
Architecture x86Adresse linéaire Adresse Linéaire : 0xa811800c : 42*4MO + 24*4KO +12 0 31 22 21 12 11 Index PDE Index PTE Offset 24 12 Page physique 42 PT PD Offset 12 0x84 0x123000 P=1 PTE n° 24 PDE n° 42 0x504000 P=1 cr3 0x40100
Architecture x86Répertoire et table des pages • Tableau de 4ko • 1024 entrées (PDE & PTE) de 4 octets • Structure identique : • Bit 31-12 : adresse en RAM • Bit 2 : 0 si accessible qu’en mode superviseur • Bit 1 : 0 accessible en lecture seule • Bit 0 : bit « P » indique si présent en mémoire.
Architecture x86Mise en place de la pagination • Configuration de toutes les tables de traduction d’adresses (PD et PT). • Initialisation du registre cr3. • Positionnement du Bit 31 du registre cr1 à 1.
Architecture x86Identity Mapping • Configuration particulière des tables de traduction d’adresses. • Adresses physique = adresse linéaire • Il faut ensuite modifier la pagination.
Architecture x86Modification des tables de traduction d’adresses • Simple en pratique mais attention au TLB • Modification du cr3 • Utilisation de l’instruction invlpg.
Simple OSLe mirroring • Permet de rendre le répertoire de pages et les tables des pages accessibles PT 0 PT 1023 0x80000000 PT 1023 PT 511 = PD 0x7fdff000 PT 511 = PD PT 0 0x7fc00000
Simple OSLe mirroring • On a fait PDE[idxMirror]=addrPD • Pour modifier le contenu de ième tables des pages il faut accéder à la page d’adresse linéaire : idxMirror*4Mo + ième*4Ko • Pour modifier les entrer du répertoire des pages il faut accéder à la page d’adresse linéaire: • idxMirror*4Mo + idxMirror*4Ko
Simple OSLe fonctionnement : la mise en place de la pagination • Mise en place de l’identity mapping • Mise en place du Mirroring • Activation de la pagination 0x3fc00000 0x40000000 0x100000 0x200000 0xa0000 0x0 BIOS &VIDEO Kernel(initial) Desc. Pagephysique MIRRORING(4MO)