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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
      ---------
VA -> -  MMU  - -> PA
      ---------
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
5
6
7
8
9
10
11
 
           -------------
0x00000000 -           -
           -------------
0x00001000 -  .text    - start of user space
           -  ........ -
           -  ........ -
           -------------
0xC0000000 -           -
           -           -
0xFFFFFFFF -------------
Je m'interesse ici a ma section .text qui est a l'adresse virtuelle 0x00001000.

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.