Linux 32 bits et 4 Go de mémoire : pas si simple
Les version 32 bits systèmes d’exploitation Linux et Windows ont l’air d’avoir du mal à fonctionner correctement dès lors que 4 Go de mémoire vive ou plus sont présents sur le système. Sachant que Windows Vista 32 bits ne reconnaît que 3.2 Go sur les 4 Go d’installés, j’ai voulu voir ce qu’il en était de Linux en regardant sur Arch Linux et Ubuntu 32 bits…
J’ai découvert que seuls 3.2 Go de RAM étaient pris en compte sur Arch Linux et Ubuntu. Linux et Windows 32 bits, même combat ? En réalité, pas tout à fait, puisque la version 32 bits du noyau est capable de reconnaître plus de 4 Go de mémoire, si on le spécifie lors de la compilation du noyau. Effectivement, dans le fichier de configuration des fonctionnalités à inclure dans le noyau, il y a une option qui permet d’utiliser 1 Go et 4Go de mémoire (HIGHMEM4G), et une autre qui permet d’utiliser jusqu’à 64 Go de mémoire (HIGHMEM64G).
Vous vous doutez bien que l’option HIGHMEM4G a été activée lors de la compilation des noyaux. Mais curieusement, cela ne permet pas de profiter de Go de RAM. Je n’ai pas cherché à comprendre le problème et j’ai recompilé le noyau en activant l’option HIGHMEM64G. Résultat des courses : 4 Go de mémoire pris en compte.
Puisque cette option est nécessaire pour profiter de 4 Go de mémoire, pourquoi n’est-elle pas choisie par défaut lors de la compilation du noyau ? Entraîne-t-elle des problèmes sur les machines qui ont moins de 3 ou 4 Go de mémoire ? Si jamais vous avez des réponses à m’apporter (pourquoi cette option, je suis évidemment preneur !

Catégorie(s) :
Mots-clés : 
du fait que le système fonctionne en 32 bits, le système ne peut pas adresser plus de 4go de ram (2^32), la possibilité d’adresser jusqu’à 64go doit est offerte par le matériel (et un noyau compatible, windows en a un aussi) et celui ci n’est pas toujours compatible, si l’option est activée par défaut, elle exclurait d’office certaines machines.
pour ce qui est de la différence 4, 3.2 (qui n’est pas toujours 3.2), ceci est du à une compatibilité arrière des bios, sans rentrer dans les détails (que je ne maitrise d’ailleurs pas), le bios utilise cette ram pour l’adressage des périphériques de l’ordinateur.
tuxce
4 juin 2008 à 20h18
La gestion de plus de 4 Go passe par le PAE (un truc de gestion des CPU Intel) pas présents sur tous les CPU et pas oficiellement supporté sur les CPU desktop (enfin, certains)
et accessoirement, faut que le pilote le prenne en compte, il me semble, et certains aiment pas d’être “hors” des 4 Go.
Et la quantité de mémoire dispo sur les 4 Go dépend en partie de la carte graphique, aussi.
Dandu
4 juin 2008 à 20h36
@tuxce : en fait je me demandais pourquoi avec l’option HIGHMEM4G ça ne marche pas, mais comme Dandu l’a fait remarquer, c’est sans doute parce que HIGHMEM4G n’utilise pas le PAE et autres joyeusetés
@Dandu : merci !
Mathieu
4 juin 2008 à 21h08
[quote comment="3836"]@tuxce : en fait je me demandais pourquoi avec l’option HIGHMEM4G ça ne marche pas, mais comme Dandu l’a fait remarquer, c’est sans doute parce que HIGHMEM4G n’utilise pas le PAE et autres joyeusetés
[/quote]
le PAE ne sert que pour + de 4go, ca n’a pas de rapport avec HIGHMEM4G, cette option ne permet de gérer que de 1 à 4 go.
tuxce
4 juin 2008 à 22h58
Oui et on en revient à la question : “qu’est-ce qui différencie les modes HIGHMEM4G et HIGHMEM64G ?”. La zone mémoire réservée aux périphérique n’est plus la même ?
Je vais faire quelques recherches, ça pourrait être intéressant…
Mathieu
5 juin 2008 à 8h24
je me suis mal exprimé alors.
si le système tourne en 32bits, il ne peut adresser que 4G adresses, dans ces 4G, il doit non seulement adresser la mémoire, mais aussi les périphériques, le bios, pour garder la compatibilité empiète sur la ram pour permettre à l’os d’accèder au périphériques (dans les 4G adressable).
lorsque HIGHMEM64G est activée (et que le matériel suit), il peut adresser + de 4G, donc il peut accéder à la totalité de la RAM + aux périphériques qui peuvent être placés en dehors de le plage des 4go de RAM
tuxce
5 juin 2008 à 10h27
OK merci pour cette précision, j’avais mal compris !
Par contre, le mode HIGHMEM64G règle ce problème, mais en apporte d’autres…
Mathieu
5 juin 2008 à 10h32