Windows 按照哪种“顺序”管理 RAM?

Windows 按照哪种“顺序”管理 RAM?

我问这个问题是因为我遇到了内存问题(BSOD,MemTest 错误),在我将故障内存条从 SLOT3 切换到 SLOT4(主板上标示)后,这些问题似乎已经停止了。

根据主板决定如何映射内存,Windows 是否倾向于首先使用 SLOT1,然后使用 SLOT2、SLOT3、SLOT4 等?例如,如果我有 4 个 2GB 的内存条,并且我在特定时刻使用的 RAM 不超过 2GB(比如我只是盯着桌面,或者听音乐),那么当 Windows 仅使用第一个内存条(SLOT1)时,其他 3 个内存条是否保持不活动状态?

答案1

但事实并非如此。操作系统甚至不知道这些数字。

主板 (BIOS) 将条带组织成 1 个或多个内存块,然后交给操作系统。顺序不一定按照插槽号的顺序。有可能 SLOT4 条带的 RAM 实际上会保存地址 0,而最高地址位于 SLOT2 条带的末尾。
此外(多通道 RAM),插槽可能成对使用(甚至三组),内存使用交错:奇数行内存来自 SLOT1,偶数行内存来自 SLOT2。

更复杂的是,任何现代操作系统都使用虚拟内存。如何在物理内存之上分配虚拟内存空间主要由 MMU(内存管理单元)处理,它是硬件(CPU 和/或北桥芯片,具体取决于我们讨论的特定 CPU)的一部分。MMU 如何重新排列内存以将其呈现给操作系统可能会有很大差异。

更复杂的是,Windows 会将其使用范围扩大到整个 RAM 空间。操作系统和中断使用最低部分,但驱动程序和其他硬件相关内容(如视频缓冲区)通常分配在 RAM 空间的末尾,而程序则分配在中间某处。

TL:DR:没有通用规则决定操作系统最终如何使用 RAM 插槽。主板上的数字只是告诉用户必须按照什么顺序填充插槽。它们对操作系统没有任何意义。

在任何现代操作系统(不仅仅是 Windows)上,您都无法让操作系统避开部分物理 RAM 来绕过坏点。(就像物理硬盘通过映射坏块所做的那样。)您必须物理移除坏的 RAM 棒或避免将好棒放入坏插槽。
而且,找出哪个棒或插槽是坏的可能是一个大问题,因为您无法从外部真正判断出您有一个坏棒还是坏插槽。
测试的唯一方法是将棒一个接一个地放在已知好的主板上进行测试。

答案2

最有可能的是,移除并重新插入 DIMM 的操作可以解决问题,而不是交换位置。

DIMM 触点的频率在 GHz 范围内,这时会发生一些非常奇怪的事情。触点通常镀金并非偶然。“重新安装”DIMM 会使触点移动几分之一毫米,并且很容易将触点的质量从“不够好”变为“刚刚好”

相关内容