Haute memory (espace user) et highmem (espace kernel)

Chaque process a 2 zones de memory: Espace user (haute memory) et espace kernel (memory faible). Dans l'espace kernel, les premiers 896 Mo sont-ils utilisés pour mapper le code du kernel (pas entièrement 1 Go)? Cela signifie que lorsqu'une application d'espace user exécute un appel système ou quelque chose en rapport avec le kernel, le kernel fait reference à l'espace kernel pour l'exécution de l'appel système, n'est-ce pas?

Les 128 Mo réservés dans l'espace kernel (pour un access memory élevé (espace user)), est-ce que ce sont toutes les references de la zone memory de l'espace user? Ainsi, un process kernel peut accéder à n'importe quel espace user en se référant à cette zone, est-ce vrai?

C'est pourquoi cette zone est appelée highmem dans l'espace kernel, n'est-ce pas?

"Mémoire élevée" et "Mémoire insuffisante" ne s'appliquent pas à l'espace d'adressage virtuel des process, mais plutôt à la memory physique.

Dans le process 'espace d'adressage virtuel, l'espace user occupe les 3 premiers Go, et le kernel espace le quasortingème Go de cet espace d'adressage linéaire.

Le premier 896 Mo de l'espace kernel (non seulement le code du kernel, mais aussi ses données) est "directement" mappé aux 896 Mo de la memory physique. Il est "direct" en ce sens qu'il y a toujours un décalage de 0xc0000000 entre n'importe quelle adresse linéaire de cette partie 896MB de l'espace kernel virtuel et de son adresse correspondante dans la memory physique (notez cependant que le MMU est activé et que les inputs de table de page sont réellement utilisé pour cela).

La dernière partie de 128 Mo de l'espace virtuel du kernel est l'endroit où sont mappées certaines parties de la "haute memory" physique (> 896 Mo): elle ne peut donc mapper que 128 Mo de "memory haute" à la fois.

Référence: «Comprendre le kernel Linux», troisième édition – sections «8.1.3. Zones de memory» et «8.1.6. Mappages du kernel des frameworks de page à memory élevée».