Quel CD ? Si tu l’as depuis longtemps, il est probablement périmé et tu aurais pu en utiliser un plus récent en 64 bits.
Quelle limite ? Des limites, il y en a plusieurs.
4 Gio est la taille de l’espace adressable avec 32 bits. Mais il existe deux espaces d’adressage avec un noyau Linux x86 32 bits : physique (côté matériel) et virtuel (côté logiciel).
Lorsque l’extension d’adressage physique (PAE) est activée (noyau 686-pae), l’adressage physique se fait sur 36 bits, donc l’espace d’adressage physique est de 64 Gio. Avec 4 Gio de RAM, on est donc loin de la limite. Néanmoins un des développeurs principaux du noyau Linux a écrit qu’au delà de 8 Gio, la gestion de la mémoire en 32 bits devenait moins performante et il valait mieux passer en 64 bits.
Il est à noter que PAE est nécessaire pour exploiter totalement 4 Gio de RAM car l’espace d’adressage physique total à prendre en compte ne contient pas que la RAM système mais aussi la mémoire de certains périphériques système comme un GPU, un contrôleur réseau, un contrôleur disque… Sans PAE, la quantité maximum de RAM utilisable est donc 4 Gio moins la taille de l’espace d’adressage physique réservé pour ces périphériques (généralement de l’ordre de 500 Mo mais qui peut aller jusqu’à 2 Gio dans le pire cas que j’ai vu).
Mais les programmes, y compris le noyau lui-même, n’accèdent pas directement à la mémoire physique. Ils accèdent à un espace d’adressage virtuel, au travers de ce qu’on appelle la mémoire virtuelle (à ne pas confondre avec le swap, qui n’est qu’une des utilisations des fonctionnalités de la mémoire virtuelle). Chaque processus 32 bits a un espace d’adressage virtuel de 4 Gio, quelle que soit la taille de la mémoire physique. Une zone (ou “page”) de cette espace peut correspondre à une page de mémoire physique, à une page de swap, à une partie d’un fichier ou bien à rien du tout.
Comme je l’ai écrit, cette limite s’applique au noyau lui-même. C’est là qu’interviennent deux autres limites d’un noyau Linux 32 bits, probablement moins connues. L’espace d’adressage virtuel de 4 Gio d’un processus est divisé en deux parties :
- 3 Gio pour le code et les données du processus
- 1 Gio pour le noyau
Cela signifie d’une part qu’en pratique un processus ne peut pas allouer plus de 3 Gio de mémoire virtuelle (qu’il les utilise ou pas) pour son code et ses données. Et d’autre part que le noyau ne peut accéder qu’à 1 Gio de mémoire physique à un moment donné. Pour accéder au reste, il doit modifier la table de correspondance entre son Gio d’espace adressable et la mémoire physique, ce qui est plus lent que s’il pouvait adresser toute la mémoire physique en permanence.
Que veux-tu dire ? Cette phrase n’a aucun sens.