我有一台装有 Arch Linux 的旧电脑
$ uname -a
Linux desktop 4.1.4-1-ARCH #1 SMP PREEMPT Mon Aug 3 21:53:10 UTC 2015 i686 GNU/Linux
带有 2GB RAM。我添加了 2x1Gb DDR2 DIMM,现在系统在所有存储体中都有 DIMM(4x1GB)。BIOS 中检测到了新内存:
System Memory Available 4024 MB
还有输出瘦身显示所有装有 1GB DIMM 的插槽
但总内存/proc/meminfo仅显示 2GB:
$ grep MemTotal /proc/meminfo
MemTotal: 2058968 kB
我尝试编辑 GRUB 中的内核参数并添加 mem=4G,但总内存仍然是 2GB。
还有什么想法可以尝试吗?
答案1
我考虑安装 linux-pae,但最终决定安装在 Arch Linux 中升级到 64 位。这是一个相当简单的过程,不需要重新安装整个系统。现在总内存为 4GB:
$ grep MemTotal /proc/meminfo
MemTotal: 3977736 kB
答案2
首先需要了解“物理地址空间”的概念。
计算机中任何“看起来像内存”的硬件都需要映射为物理地址空间的一部分。这包括 RAM,但也包括 IO 设备。特别是一些显卡需要大量的物理地址空间。
当 BIOS 初始化硬件时,它会确定每个硬件的物理地址。
由于 RAM 不是地址空间的唯一用户,因此使用 4GB 系统上的所有 RAM 需要使用超过 32 位的物理地址。
要实现这一点需要 CPU、芯片组和操作系统的支持。
- CPU 已经得到支持多年了(自从奔腾专业版以来)。
- 台式机和笔记本电脑芯片组大多在 2000 年代中期增加了支持。
- 在 Linux 上,您需要 64 位内核或使用 PAE 构建的 32 位内核。在 Windows 上,您需要 64 位版本的操作系统、服务器版本或破解版内核。
在 4GB 地址空间限制下,究竟有多少内存可用取决于机器中的硬件以及 BIOS 如何决定映射内容。某些 BIOS 可能具有“将内存最大化到 4GB 以下”或类似选项,这可能会增加地址空间限制为 4GB 的操作系统的可用内存。