Bonjour,
En ce moment je m'interesse a la mmu et j'ai l'impression qu'il me manque un element.
Partons du processeur, un arm par exemple on peut representer la chose ainsi :
Maintenant cote Linux, nous avons deux processus, chacun a son espace virtuel en version simplifiee :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 --------- VA -> - MMU - -> PA ---------
Je m'interesse ici a ma section .text qui est a l'adresse virtuelle 0x00001000.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ------------- 0x00000000 - - ------------- 0x00001000 - .text - start of user space - ........ - - ........ - ------------- 0xC0000000 - - - - 0xFFFFFFFF -------------
Quelle VA va etre donnee a la mmu de mon processeur ? En ayant deux processus, j'ai deux adresses virtuelles qui sont supposees pointer sur des adresses physiques differentes en fonction du contexte en l'occurence le pid.
Qui va gerer ce contexte ? Linux ou la MMU du processeur ?
N'y a-t-il pas des ambiguites sur les termes virtuelle et physique ? J'ai tendance a me dire que l'adresse virtuelle du processus n'a rien a voir avec celle en entree de la MMU et qu'il y a une couche intermediaire sur laquelle je ne trouve rien (peut etre parce qu'elle n'existe pas !)
Et lorsque l'on parle d'adresse physique pour le noyau est-ce vraiment une adresse ou physique au sens materiel ou ne serait-ce pas la VA de la MMU ?
Si quelqu'un peut m'eclairer, ce serait gentil. J'ai regarde dans des livres comme LDD ou Understanding the Linux Kernel mais j'ai l'impression qu'il manque un maillon ou alors je suis passe a cote de quelque chose. J'ai l'impression que Linux a sa propre MMU en lisant certains chapitre.
Partager