我使用的是 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 中验证了安装的 RAM 是 4 GB,而不是 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.7 GB(我猜 BIOS 报告的内存更多是因为视频卡、PCI 和 IO 设备等的地址空间)。由于这些问题,最终只有 3.6 GB 可供应用程序使用。
注意“缺失”内存量,这“反映了由于内存映射中的内存漏洞而丢失的内存寻址空间。通常,漏洞是留给 PCI 空间、IO 等的。每个供应商型号的系统都不同,并且每个系统对缺失内存的报告值也不同。”
另外,请查看 fossfreedom 指出的问题,它为您提供了有关寻址空间可能被使用的位置的更多解释。