【问题标题】:can ram controllers be functionally kept from becoming idle?ram 控制器可以在功能上保持空闲状态吗?
【发布时间】:2013-05-29 23:07:49
【问题描述】:

向我表明,在系统崩溃的情况下读取内存是可能的,甚至可以被内存旁路接管。 http://www.google.com/patents/US6745308

然而,专利一再指出,如果一个组件不是空闲的,它就不能被绕过。这似乎已经得到证实:https://electronics.stackexchange.com/a/70881/17872

c++ 是否可以在允许程序正常运行的同时防止 ram 控制器空闲?如果有,怎么做?

我知道如果可能的话,这可能是大量代码,所以请随时提供伪代码(但实际代码需要经过长期检查)。

【问题讨论】:

    标签: c++ security memory-management hardware ram


    【解决方案1】:

    这真的取决于你所说的“保持空闲”的意思,可能还有一系列参数系统参数(总线速度、内存控制器速度、CPU/GPU 速度等)。一个微不足道的尝试可能只是分配大量内存,并以处理器可以达到的速度简单地写入该内存中的每个单元。执行此操作的多个线程可能需要使总线饱和,因为单核可能不会发出足够的写操作。

    话虽如此,我不确定这一定是一个关键因素。是的,如果有人编写了病态的糟糕代码,专利方法不会提供任何好处。但它也不会造成很大的缺点,而不是没有它。是的,还有几个门,但它看起来不像是一组极其复杂的逻辑(与现代处理器或 GPU 中的所有其他东西相比)。关键是,很多时候,系统不是 100% 饱和的,绕过会成功,这会带来好处。

    我当然可能误解了你的问题是什么,以及你为什么要问它......

    【讨论】:

    • 该专利称,它需要内存控制器变为“空闲”(无论他们如何定义它),然后才能绕过它并可能劫持系统。 ee.stack q 可能会解释原因。我想知道程序是否有可能在 100% 的 ram 保持在此活动状态时运行(尽管已降级)。并希望在类/函数中无缝
    • 您想了解什么?据我了解,该专利是通过更直接地向控制器发出内存请求来绕过主内存控制器处理。这只有在没有正在进行的命令时才有可能(换句话说,只有在它空闲时才有可能)。可以理解的是,我们不能随意“插队”。再说一次,除非我遗漏了什么——我在阅读专利方面没有那么丰富的经验,而且这种语言与“普通的东西”不同,因为不给类似的想法太多的回旋余地是故意模糊和神秘的。
    • 如果你看图3,它似乎同意我的“如果不可能,使用北桥接口”的描述 - 所以只有在可能的情况下才使用旁路,否则使用“传统方法”。
    • 好吧,通过硬件访问,以及在内存控制器和处理器之间精心布置的探针,您可以记录所有内存活动。但它当然会产生大量数据,其中大部分从安全方面来说毫无用处。如果您知道自己在寻找什么,也许可以使用其中之一:agilent.com/about/newsroom/presrel/2009/09nov-em09162.html 但是在不被注意的情况下偷偷溜过某人并不是一件容易的事……;)
    • 仅当您可以在机器中热插拔内存时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2012-01-25
    相关资源
    最近更新 更多