32bitový adresní prostor znamená, že máte prostor pro 4 GB adres. V ideálním případě by jádro rádo mohlo mapovat veškerou fyzickou paměť, veškerou paměť aktuální úlohy a veškerou svou vlastní paměť. Pokud samotná fyzická paměť zabere všechny dostupné 4 GB, nebude to fungovat. Fyzická paměť je tedy rozdělena na nízkou paměť, která je mapována neustále, a vysokou paměť, která musí být mapována, když se používá. Pokud nepoužíváte opravené jádro, na architektuře ix86 je 128 MB adresního prostoru věnováno kódu jádra a datovým strukturám a 896 MB je věnováno mapování fyzické paměti (celkem 1 GB).
Čtení na pozadí o složitosti správy paměti, když váš adresní prostor není pohodlně větší než celková paměť:
- Velká paměť na wiki správce paměti Linux
- Velká paměť v linuxovém jádře na Kernel Trap
- Kapitola mapování paměti v LDD3
Výňatky z vašich protokolů jádra:
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
Zde máte 887 MB nízké paměti:teoretické maximum 896 MB mínus několik MB vyrovnávací paměti DMA (zóny paměti používané ke komunikaci s hardwarovými zařízeními).
Z vaší fyzické paměti je 3328 MB mapováno na adresy pod 4 GB a 768 MB je mapováno na adresy nad 4 GB (rozsah 0x100000000–0x130000000). Nedostanete přístup k těmto 768 MB, což vysvětluje, proč máte k dispozici pouze 3 242 MB (4 096 MB RAM minus 768 MB nepřístupných minus 9 MB vyrovnávací paměti DMA minus 75 MB, které používá samotné jádro pro kód a data). Nevím, proč BIOS mapuje nějakou RAM nad 4GB, ale jako datový bod to posílám z PC se 4GB RAM, který má podobně RAM mapovanou na 0x100000000–0x130000000.
Mapování fyzické paměti nad 4 GB vyžaduje použití PAE. PAE představuje malou výkonovou režii (zejména vyžaduje větší datové struktury ve správci paměti), takže není systematicky povolen. Výchozí jádro Ubuntu je zkompilováno bez podpory PAE. Získejte -generic-pae
jádro pro přístup až k 64 GB paměti RAM.
TL,DR:Linux funguje podle očekávání. Firmware není tak užitečný. Získejte jádro s podporou PAE.