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 – memtest86测试用于运行自身的内存吗?全部内容,希望文章能够帮你解决linux – memtest86测试用于运行自身的内存吗?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)