首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止一个程序/进程分页?

问如何防止一个程序/进程分页?
EN

Stack Overflow用户
提问于 2010-03-02 00:16:52
回答 3查看 3.4K关注 0票数 17

我有一个程序需要很多内存,就像所有物理内存的2/3。经过一些运行时,我的操作系统开始将程序交换到hdd。但是,我需要程序始终响应得非常快,所以我需要防止对这个过程进行分页。

如何防止操作系统交换一个进程?

谢谢你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-02 00:43:06

在节目开始时,打电话给:

代码语言:javascript
复制
mlockall(MCL_CURRENT | MCL_FUTURE);

(如果您没有程序的源代码,就必须使用ptrace来破坏这个过程)。

请注意,这将增加进程失败导致内存分配的可能性。

票数 8
EN

Stack Overflow用户

发布于 2010-03-02 00:24:15

好吧,有马洛克来锁定内存(告诉内核它可能不会换掉),但是这意味着内存相对较少,并且需要修改程序。

另一种选择可能是调整Linux的“交换性”,即它交换页面的倾向。有关有趣的讨论,请参见这里。但是,每个进程都不可能这样做。

我不知道你的问题有什么解决方案。

票数 6
EN

Stack Overflow用户

发布于 2010-03-02 00:23:29

使用mmap()代替malloc,并使用"MAP_LOCKED“标志。(工作于linux > 2.5.37)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2360116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档