Comment un espace d'adressage virtuel de processus 64 bits est-il divisé sous Linux?

12

L'image suivante montre comment un espace d'adressage virtuel de processus 32 bits est divisé:

entrez la description de l'image ici

Mais comment un espace d'adressage virtuel de processus 64 bits est-il divisé?

Christophe
la source

Réponses:

10

La carte de mémoire virtuelle x86 64 bits divise l'espace d'adressage en deux: la section inférieure (avec le bit supérieur défini sur 0) est l'espace utilisateur, la section supérieure (avec le bit supérieur défini sur 1) est l'espace noyau. (Notez que x86-64 définit les adresses «canoniques» «moitié inférieure» et «moitié supérieure», avec un nombre de bits effectivement limité à 48 ou 56; voir Wikipedia pour plus de détails.)

La carte complète est documentée en détail dans le noyau ; actuellement il ressemble

========================================================================================
    Start addr    | Offset  |     End addr     |  Size   | VM area description
========================================================================================
                  |         |                  |         |
 0000000000000000 |    0    | 00007fffffffffff |  128 TB | user-space virtual memory
__________________|_________|__________________|_________|______________________________
                  |         |                  |         |
 0000800000000000 | +128 TB | ffff7fffffffffff | ~16M TB | non-canonical
__________________|_________|__________________|_________|______________________________
                  |         |                  |         |
 ffff800000000000 | -128 TB | ffffffffffffffff |  128 TB | kernel-space virtual memory
__________________|_________|__________________|_________|______________________________

avec des adresses virtuelles 48 bits. (La variante 56 bits a la même structure, avec 64 PB d'espace d'adressage utilisable de chaque côté d'un trou PB de 16 Ko.)

Contrairement au cas 32 bits, la carte mémoire «64 bits» est un reflet direct des contraintes matérielles.

Stephen Kitt
la source
Pour clarifier: cette limitation est imposée par le matériel. Il n'y a actuellement aucune implémentation de processeur 64 bits qui ne laisse pas un énorme trou d'adresses inutilisables au milieu de l'espace d'adressage virtuel. La quantité de mémoire physique que les processeurs peuvent gérer est également bien inférieure à 2 pour une puissance de 64.
Johan Myréen
Merci @Johan, j'ai essayé de le souligner.
Stephen Kitt