J'essaie actuellement de comprendre la programmation des systèmes pour Linux et j'ai du mal à comprendre comment fonctionnent les mappages de mémoire virtuelle vers physique. Ce que je comprends jusqu'à présent, c'est que deux processus P1
et P2
peuvent faire référence à la même adresse virtuelle par exemple 0xf11001
. Maintenant, cette adresse mémoire est divisée en deux parties. 0xf11
est le numéro de page et 0x001
est le décalage dans cette page (en supposant 4096 taille de la page est utilisée). Pour trouver l'adresse physique, la MMU a des registres matériels qui mappent le numéro de page à une adresse physique, disons 0xfff
. La dernière étape consiste à combiner 0xfff
avec 0x001
pour trouver l'adresse physique 0xfff001
.Fonctionnement du mappage de mémoire virtuel vers pyhsical
Cependant cette compréhension ne fait aucun sens, les mêmes adresses virtuelles pointeraient toujours vers le même emplacement physique ??? Quelle étape manque-t-il pour que ma compréhension soit correcte ???