Un espace d'adressage 32 bits signifie que vous disposez d'un espace pour 4 Go d'adresses. Idéalement, le noyau aime pouvoir mapper toute la mémoire physique, toute la mémoire de la tâche en cours et toute sa propre mémoire. Si la mémoire physique occupe à elle seule tous les 4 Go disponibles, cela ne fonctionnera pas. La mémoire physique est donc divisée en mémoire faible, qui est mappée tout le temps, et en mémoire haute, qui doit être mappée lorsqu'elle est utilisée. À moins que vous exécutiez un noyau corrigé, sur l'architecture ix86, 128 Mo d'espace d'adressage sont consacrés au code du noyau et aux structures de données, et 896 Mo sont consacrés au mappage de la mémoire physique (pour un total de 1 Go).
Lecture de fond sur les complexités de la gestion de la mémoire lorsque votre espace d'adressage n'est pas confortablement plus grand que votre mémoire totale:
Extraits de vos journaux de noyau:
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
BIOS-e820: 00000000cdce0000 - 00000000cdce3000 (ACPI NVS)
BIOS-e820: 00000000cdce3000 - 00000000cdcf0000 (ACPI data)
BIOS-e820: 00000000cdcf0000 - 00000000cdd00000 (reserved)
BIOS-e820: 00000000d0000000 - 00000000e0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
2404MB HIGHMEM available.
887MB LOWMEM available.
Zone PFN ranges:
DMA 0x00000000 -> 0x00001000
Normal 0x00001000 -> 0x000377fe
HighMem 0x000377fe -> 0x000cdce0
Ici, vous avez 887 Mo de mémoire faible: le maximum théorique de 896 Mo moins quelques Mo de tampons DMA (zones de mémoire utilisées pour communiquer avec les périphériques matériels).
De votre mémoire physique, 3328 Mo sont mappés à des adresses inférieures à 4 Go et 768 Mo sont mappés à des adresses supérieures à 4 Go (la plage 0x100000000–0x130000000). Vous n'avez pas accès à ces 768 Mo, ce qui explique pourquoi vous n'avez que 3242 Mo disponibles (4096 Mo de RAM moins 768 Mo inaccessibles moins 9 Mo de tampons DMA moins 75 Mo utilisés par le noyau lui-même pour le code et les données). Je ne sais pas pourquoi le BIOS mappe de la RAM au-dessus de la marque de 4 Go, mais en tant que point de données, je publie cela à partir d'un PC avec 4 Go de RAM qui a de la même manière une RAM mappée à 0x100000000–0x130000000.
Le mappage de la mémoire physique au-dessus de 4 Go nécessite l'utilisation de PAE . PAE entraîne une petite surcharge de performances (en particulier, il nécessite des structures de données plus grandes dans le gestionnaire de mémoire), il n'est donc pas systématiquement activé. Le noyau Ubuntu par défaut est compilé sans prise en charge PAE. Obtenez le -generic-pae
noyau pour pouvoir accéder jusqu'à 64 Go de RAM.
TL, DR: Linux fonctionne comme prévu. Le firmware n'est pas si utile. Obtenez un noyau compatible PAE.