我使用的是 Ubuntu Linux 64 位元。最近,我正在使用Ubuntu 32位,透過指令發現grep --color=always -iw lm /proc/cpuinfo
我的處理器能夠支援64位。該命令的輸出是:
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc up pebs bts nopl pni dtes64 monitor ds_cpl tm2 cid cx16 xtpr
然而,在擦除磁碟並安裝 Ubuntu 11.10 64 位元後,系統仍然偵測到只有 3.1 GB RAM。我已在 BIOS 中驗證我安裝了 4 GB RAM,而不是 3.1 GB。為什麼 Ubuntu 64 位元僅偵測到 3.1 GB RAM?
輸出uname -a
aaron@Aarons-Ubuntu-Computer:~$ uname -a
Linux Aarons-Ubuntu-Computer 3.0.0-12-generic #20-Ubuntu SMP Fri Oct 7 14:56:25 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
輸出free -m
aaron@Aarons-Ubuntu-Computer:~$ free -m
total used free shared buffers cached
Mem: 3136 2960 175 0 233 1996
-/+ buffers/cache: 730 2405
Swap: 3189 0 3189
答案1
目前使用的 CPU 中約有 80%(幾乎每一個售出的新 CPU)都支援 64 位元 Ubuntu,因此這並不令人意外。有計劃建議將 64 位元 Ubuntu 作為預設設定(現在建議使用 32 位元),因為大多數人的硬體都能夠運行它。
不過,要查看內核看到的總記憶體以及有關其最初分配方式的報告,您可以執行以下操作:
dmesg |grep "Memory: "
這將顯示一行,如下所示:
[ 0.000000] Memory: 3823988k/4849664k available (6109k kernel code, 874468k absent, 151208k reserved, 4876k data, 984k init)
我的系統安裝了 4GB RAM,但報告的總記憶體約為 4.7GB(我猜 BIOS 報告的記憶體更多是由於顯示卡、PCI 和 IO 設備及其他設備的位址空間所致)。由於這些問題,最終只有 3.6 GB 可供應用程式使用。
請注意「缺少」的記憶體量,這「反映了由於記憶體映射中的記憶體漏洞而遺失的記憶體尋址空間。通常會為PCI 空間、IO 等留下漏洞。每個供應商型號的系統都不同,每個系統都會有為缺失的記憶報告了不同的值。
另請參閱 fossfreedom 指出的問題,它為您提供了有關尋址空間可能在何處使用的更多解釋。