1 / 16

Simple OS La Pagination

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

fiorenza
Download Presentation

Simple OS La Pagination

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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.

  2. 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

  3. Principe de la memoire virtuelleObjectifs • Avant : • Programmer en fonction de la mémoire disponible • Après : • Mémoire disponible « infinie »

  4. Principe de la memoire virtuelleObjectifs • Comment est-ce possible ? • Utilisation des autres ressources. • RAM utilisé pour stocker les données les plus utilisées.

  5. 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

  6. 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

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

  8. 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

  9. 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.

  10. 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.

  11. Architecture x86Identity Mapping • Configuration particulière des tables de traduction d’adresses. • Adresses physique = adresse linéaire • Il faut ensuite modifier la pagination.

  12. Architecture x86Modification des tables de traduction d’adresses • Simple en pratique mais attention au TLB • Modification du cr3 • Utilisation de l’instruction invlpg.

  13. 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

  14. 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

  15. 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)

  16. Questions ?

More Related