• Vista让内存故障无处藏身
    • (2007-2-2 14:23:13)
      伴随着每次Windows升级换代,麻烦也会随之而来。

        在我从Windows 95升级到Windows 2000时,几乎所有的硬件驱动程序都不能用了;即便是关键的设备(如声卡),我都不得不挨到新的驱动程序发布。

        现在,一些人从Windows XP升级到了Vista,他们发现原来正常运行XP的机器在Vista下会蓝屏死机。发生蓝屏死机通常是因为内存故障或使用了劣质内存引起。

        但是为什么在XP中没问题,而在Vista中会出问题呢?难道Vista对内存的使用与XP不同吗(除了安装Vista需要更多的内存外)?答案是肯定的,原因多少有些让人意外: 与XP相比,Vista使用内存更彻底。

        Vista使用了称为随机地址空间分配(address space layout randomization,ASLR)的技术,目的是防止常见的入侵方式,如缓冲区溢出。每次启动,操作系统会将自身的代码加载到不同的内存区域。这使得攻击者很难判断某段代码会被加载到内存的什么地方(从而搅乱攻击者)。许多BSD操作系统和一些商业版的Linux(如Red Hat就是其中之一)很长时间前就具备了此功能。

        这项技术不能彻底解决问题(人们也没指望它会),但它确实会让攻击者的随意性攻击变得更难得逞,它还可以为微软产品以外的软件提供一点点防护。

        但这也意味着运行XP正常,但内存却隐藏着问题的机器,在运行Vista时会出问题。发生如此问题时,通常意味着你得更换内存了,因为即便在XP下,故障内存也会导致你不清楚的、隐式的内存崩溃问题(如系统莫名其妙的崩溃或程序故障)。

        如果你用的是Vista,并且碰到了你觉得可能是内存故障的问题,你可以在Vista下检测一下。点击开始菜单,在查询对话框输入“mem”,调出内存诊断工具(Memory Diagnostics Tool)。运行后,程序会重启计算机,然后会对你的系统内存展开一系列的测试,最后报告测试结果。如果某个内存模块儿有问题,最好做到心知肚明并尽快解决,而不要听之任之。

        要指出的是,ASLR技术只有针对特别编写支持该技术的二进制程序上才会起作用。当然Vista系统自己的组件都是支持ASLR的。

        最后给个私人提示,这些类似的问题已经让我在内存(还有系统)上花费了额外的钱,使其支持ECC(error checking and correction,内存校验),从而为通常的内存问题带来额外的保护。

  • 评论列表
  • 发表评论