linux – memtest86测试用于运行自身的内存吗?

前端之家收集整理的这篇文章主要介绍了linux – memtest86测试用于运行自身的内存吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
其中一个常见的服务器故障情况是坏DRAM,有时即使使用ECC内存也是如此.

memtest86是诊断DRAM问题最有用的工具之一.当它在内存开始时加载自身时,我一直想知道memtest86是否会检查内存中加载memtest86的部分.

分配给memtest86的内存是否小到无关紧要,或者memtest86是否可能错过DRAM中的缺陷,因为它无法测试它所在的内存位置?

解决方法

显然,memtest86无法测试当前包含memtest86可执行代码的内存区域(但如果该区域存在内存错误,则测试本身很可能会崩溃).但是,memtest86能够在运行时将自己的代码重定位到不同的地址,并且通过使用这个技巧,它能够测试固件(B IOS)允许使用的所有内存 – 只是不能一次完成.

代码重定位在memtest86源代码存档中的README.background中描述(文件稍微过时 – 例如,它指出用于memtest86代码的地址是0x2000和0x200000,但源中定义的低地址是实际上是0x10000,高地址是0x2000000或0x300000,具体取决于机器中的内存量).

但即使使用此重定位技巧,memtest86仍无法测试所有内存,原因如下:

>通常,固件(BIOS)保留一些RAM区域供自己使用(例如,ACPI表).虽然可以通过cpu访问这些RAM区域,但将任何内容写入其中都可能导致不可预测的行为.
>某些部分RAM用于System Management Mode,甚至无法从特权SMM代码之外的cpu访问.>由于传统PC内存布局的怪癖,因此无法访问640K和1M之间的RAM地址范围(某些RAM可能会用作BIOS ROM和SMM的阴影,其他部分可能完全无法访问).

猜你在找的Linux相关文章