有没有办法强制程序留在RAM中

时间:2013-02-22 01:28:21

标签: java c++ linux windows service

我可以编写一个程序,它会启动其他小程序,这些程序保留在物理RAM中并避免交换到磁盘吗?我很好奇Linux和Windows的答案。

2 个答案:

答案 0 :(得分:9)

POSIX系统可以使用mlock/munlock将内存锁定到RAM中。在Windows上,您可以使用VirtualLock完成相同的操作。

在几乎所有情况下,你都希望让操作系统处理这类事情。

编辑:详细说明,如果你想要这样做的原因是性能或响应能力,不要。您想要这样做的唯一原因就是阻止密码或加密密钥意外地写入磁盘,攻击者可能会从中获取密码或加密密钥。

答案 1 :(得分:1)

Similar topic

引用其中一位用户:

  

是的:让程序调用VirtualLock函数:

     

进程已锁定的页面保留在物理内存中,直到   进程解锁或终止。这些页面保证不会   在被锁定时写入页面文件。

     

我相信SetProcessWorkingSetSize函数也可能有用。

     

对于那些认为我甚至暗示这是异端邪说的人   可能有用:

     

请注意,锁定页面可能有正当理由   记忆。一个正当理由可能是用户正在运行CD刻录机,   并且CD刻录机不断寻呼并因此导致缓冲   不足,创造一个过山车。在那种情况下,它是有效的   锁定内存缓冲区,以便它们不会被分页,即使这样   意味着计算机的其余部分会慢慢爬行,因为它仍然存在   比给用户一个过山车更好。可以有其他有效的   原因也是 - 我的观点是,虽然通常不建议锁定   内存中的页面,有效的情况仍然存在,我不这么认为   杀死这个想法将有助于OP。

     

更新:查看Process Hacker的Reduce Working Set菜单   选项。