【问题标题】:How to lock pages in memory using WinAPI?如何使用 WinAPI 锁定内存中的页面?
【发布时间】:2009-12-17 00:36:41
【问题描述】:

我需要防止应用程序的内存页面在 Windows 上被换出 RAM。是否有相当于 POSIX mlockall() 的 WinAPI 函数来实现这一点?

【问题讨论】:

    标签: c windows winapi real-time


    【解决方案1】:

    是的,VirtualLock()。您可以锁定多少页是有限制的,您不能占用 RAM。详情在MSDN article.

    【讨论】:

      【解决方案2】:

      我不得不问,你为什么需要这样做?如果每个应用程序都认为它的页面如此重要以至于它们不应该被分页,那将是对内存的巨大浪费。

      如果页面正在使用,它们不会发送到页面文件,如果它们不使用,为什么要保留它们?相信mm,是a very smart guy写的:)

      【讨论】:

      • 大多数应用程序都是如此,但我正在编写一个非常具体的应用程序,我需要保证不会因页面错误而导致延迟。
      • 您能详细说明一下吗?如果您描述更多场景,也许我们可以给您更好的答案...
      • 老兄! Windows 不是实时操作系统。与系统上许多其他延迟和中断来源相比,页面错误的延迟会很小。
      • 幸运的是,我只是需要它进行一些测试。
      • 锁定可用于防止敏感数据被交换到磁盘上。
      【解决方案3】:

      您好,您可以在内存中设置锁定页面的 windows 选项。通常此设置主要由 SQL Server 使用,但也适用于其他应用程序。在msdn查看此网站

      为您的应用程序启用寻址 Windows 扩展 (AWE)。请参阅msdn上的此链接

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-23
        • 2017-10-15
        • 1970-01-01
        • 2012-01-06
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        相关资源
        最近更新 更多