Document 7591187

Download Report

Transcript Document 7591187

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
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
2
Principe de la memoire virtuelle
Objectifs
• Avant :
– Programmer en fonction de la mémoire
disponible
• Après :
– Mémoire disponible « infinie »
3
Principe de la memoire virtuelle
Objectifs
• Comment est-ce possible ?
– Utilisation des autres ressources.
– RAM utilisé pour stocker les données les plus
utilisées.
4
Principe de la memoire virtuelle
Traduction d’adresses
• Prise en charge par la MMU
Bus de données
CPU
Bus de données
RAM
MMU
Adresses fictives
Adresses RAM
Exception MMU
5
Principe de la memoire virtuelle
Traduction d’adresses
MMU
CPU
Accès à une donnée
Chargement d’un instruction
Adresse
fictive
Il existe une traduction en RAM?
oui
Utilisation des données
Exécution de l’instruction
Bus de données
Mémoire
Accès à la RAM
non
Exception
OS
La donnée/instruction
est stockée ailleurs ?
oui
Transfert vers
la RAM
Données/instruction
sur le bus de données
non
Signale accès invalide à
l’application fautive
Nouvelle traduction
communiquée à la MMU
6
Architecture x86
Petit 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
7
Architecture x86
Adresse linéaire
Adresse Linéaire : 0xa811800c : 42*4MO + 24*4KO +12
31
22 21
Index PDE
12 11
Index PTE
Offset
24
42
0
12
Page physique
PT
PD
Offset 12
PTE n° 24
PDE n° 42
cr3
0x40100
0x84
0x123000 P=1
0x504000 P=1
8
Architecture x86
Ré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.
9
Architecture x86
Mise en place de la pagination
1. Configuration de toutes les tables de
traduction d’adresses (PD et PT).
2. Initialisation du registre cr3.
3. Positionnement du Bit 31 du registre cr1
à 1.
10
Architecture x86
Identity Mapping
• Configuration particulière des tables de
traduction d’adresses.
• Adresses physique = adresse linéaire
• Il faut ensuite modifier la pagination.
11
Architecture x86
Modification des tables de traduction
d’adresses
• Simple en pratique mais attention au TLB
– Modification du cr3
– Utilisation de l’instruction invlpg.
12
Simple OS
Le mirroring
• Permet de rendre le répertoire de pages et
les tables des pages accessibles
PT 0
PT 1023
PT 511
=
PD
PT 1023
PT 511
=
PD
0x80000000
0x7fdff000
PT 0
0x7fc00000
13
Simple OS
Le 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
14
Simple OS
Le fonctionnement : la mise en place de
la pagination
1. Mise en place de l’identity mapping
2. Mise en place du Mirroring
0x40000000
0x3fc00000
0x200000
0x100000
0xa0000
0x0
BIOS &
VIDEO
Kernel
(initial)
Desc.
Page
physique
MIRRORING
(4MO)
3. Activation de la pagination
15
Questions ?
16