1

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

4

2 回答 2

9

mlockPOSIX 系统可以使用/munlock将内存锁定到 RAM 中。在 Windows 上,您可以使用VirtualLock.

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

编辑:详细说明,如果您想要这样做的原因是性能或响应能力,请不要. 几乎你想要这样做的唯一原因是阻止密码或加密密钥意外写入磁盘,攻击者可能会得到它。

于 2013-02-22T01:34:44.397 回答
1

相似主题

引用其中一位用户的话:

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

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

我相信 SetProcessWorkingSetSize 函数也可能会有所帮助。

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

请注意,在内存中锁定页面可能是有正当理由的。一个有效的原因可能是用户正在运行 CD 刻录机,而 CD 刻录机不断换页并因此导致缓冲区欠载,从而产生过山车。在这种情况下,锁定内存缓冲区以使其不会被分页是有效的,即使这意味着计算机的其余部分会慢下来,因为这仍然比给用户一个过山车好。也可能有其他正当理由——我的观点是,虽然通常不建议将页面锁定在内存中,但仍然存在有效情况,我认为终止这个想法不会帮助这里的 OP。

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

于 2013-02-22T01:34:59.407 回答