【问题标题】:How do RAM Test Applications work? C# Example?RAM 测试应用程序如何工作? C# 示例?
【发布时间】:2009-08-20 15:14:49
【问题描述】:

RAM 测试应用程序究竟是如何工作的,是否可以使用 C#(示例)编写这样的应用程序?

【问题讨论】:

  • 您无法使用任何 .NET 语言(如 C#)编写 RAM 测试应用程序。您需要查看机器级别的内容,而虚拟机会掩盖这些信息。

标签: c# .net algorithm


【解决方案1】:

大多数使用低级硬件访问将各种位模式写入内存,然后将它们读回以确保它们与写入的模式相同。如果不是,RAM 可能有故障。

它们通常用低级语言(汇编程序)编写以直接访问 RAM - 这样就可以避免任何缓存(可能会影响测试结果)。

当然可以用 C# 编写这样的应用程序 - 但这几乎肯定会阻止您直接对内存进行位级访问,因此永远不会像低级内存测试仪那样彻底或可靠。

【讨论】:

    【解决方案2】:

    您基本上是写入 RAM,读回它并将其与预期结果进行比较。您可能想要测试各种模式以检测不同的错误(always-0、always-1),并运行多次迭代来检测虚假错误。

    只要您可以直接访问要测试的内存,您就可以使用任何您喜欢的语言来执行此操作。如果您想测试物理 RAM,可以使用 P-invoke 伸出 CLR。

    但是,如果您的计算机基于Von Neumann architecture,这将无法解决一个特定问题:测试内存的程序实际上位于同一内存中。您将不得不重新定位程序以测试所有内容。德国杂志 c 没有为他们的Ramtest 找到解决此问题的方法:他们从视频内存中运行测试。实际上,这在 C# 中是不可能的。

    【讨论】:

    • 可以让程序从 CPU 缓存中运行(有一些技巧)并让它测试 DRAM。
    【解决方案3】:

    正如一些试图用 C 语言编写 memtest 程序的 Linux 大师发现的那样,任何此类程序都必须经过编译才能在裸硬件或无 MMU 操作系统上运行才能有效。

    我认为任何 C# 编译器都无法做到这一点。

    【讨论】:

      【解决方案4】:

      在 Windows 中使用 C# 程序测试内存的工作可能不如在没有操作系统的情况下运行的 C 或汇编语言程序中那样出色,但您仍然可以做出一些有用的东西。

      您将需要使用本机 Windows API(通过 dllimpott 和 P/invoke)来分配内存并将其锁定到 RAM 中。一旦你这样做了,在内存中读取和写入模式就很容易了。

      在测试结束时,您可以告诉用户您能够测试多少他们的记忆。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多