GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Qu'est-ce que la mémoire élevée et la mémoire faible sous Linux ?

Je suis intéressé par la différence entre Highmem et Lowmem :

  1. Pourquoi y a-t-il une telle différenciation ?
  2. Que gagnons-nous en faisant cela ?
  3. Quelles sont les fonctionnalités de chacun ?

Réponse acceptée :

Sur une architecture 32 bits, la plage d'espace d'adressage pour l'adressage de la RAM est :

0x00000000 - 0xffffffff

ou 4'294'967'295 (4 Go).

Le noyau Linux divise cela en 3/1 (peut également être 2/2 ou 1/3 ) en espace utilisateur (mémoire élevée) et espace noyau (mémoire faible) respectivement.

La plage de l'espace utilisateur :

0x00000000 - 0xbfffffff

Chaque processus utilisateur nouvellement généré obtient une adresse (plage) à l'intérieur de cette zone. Les processus utilisateur ne sont généralement pas fiables et il leur est donc interdit d'accéder à l'espace du noyau. De plus, ils sont considérés comme non urgents, en règle générale, le noyau essaie de différer l'allocation de mémoire à ces processus.

La plage d'espace du noyau :

0xc0000000 - 0xffffffff

Un processus du noyau obtient son adresse (plage) ici. Le noyau peut accéder directement à ce 1 Go d'adresses (enfin, pas le 1 Go complet, il y a 128 Mo réservés pour un accès mémoire élevé).

Les processus générés dans l'espace noyau sont fiables, urgents et supposés sans erreur, la demande de mémoire est traitée instantanément.

Chaque processus du noyau peut également accéder à la plage d'espace utilisateur s'il le souhaite. Et pour y parvenir, le noyau mappe une adresse de l'espace utilisateur (la mémoire haute) vers son espace noyau (la mémoire basse), les 128 Mo mentionnés ci-dessus sont spécialement réservés à cela.

Que le partage soit 3/1, 2/2 ou 1/3 est contrôlé par CONFIG_VMSPLIT_... option; vous pouvez probablement vérifier sous /boot/config* pour voir quelle option a été sélectionnée pour votre noyau.


Linux
  1. Linux - Différence entre l'espace utilisateur et l'espace noyau ?

  2. Linux – Les différents noyaux Linux/unix sont-ils interchangeables ?

  3. Dans quels langages Windows, Mac OS X et Linux sont-ils écrits ?

  4. Quels caractères sont interdits dans les noms de répertoires Windows et Linux ?

  5. Débogage en direct du noyau Linux, comment cela se passe-t-il et quels outils sont utilisés ?

Quelle est la différence entre les noyaux macOS et Linux

Noyau Linux 5.9 :nouveautés et mise à niveau

Que sont les journaux Linux et où les trouver

Le noyau Linux et ses fonctions

Que faire en cas de panique du noyau Linux

Quelle est la différence entre l'espace utilisateur et l'espace noyau ?