gpt4 book ai didi

linux - linux 是否按需加载程序页面?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:49 25 4
gpt4 key购买 nike

我编写了一个程序守护进程,当计算机的硬盘驱动器 Controller 崩溃时,它会启动某种 self 修复程序。这个程序已经运行良好,但我担心这个程序(大约 18KB 的编译文件大小)可能没有被操作系统完全加载到 RAM 中,而且 - 当我真的不走运时 - 一些程序页面必须从恰好在程序必须激活并且不再可能访问磁盘时磁盘。

毕竟,大部分时间程序都处于无限循环中,检查是否一切正常,并且 95% 的程序代码未被使用。因此,我认为内核可以通过从 RAM 中删除未使用的程序页面来优化 RAM 的使用。

所以,我的问题是:Linux 是否会加载所有程序代码页并将其保留在内存中,从而无需再次访问硬盘来运行程序代码本身, 程序启动后

技术细节:Linux 内核 2.6.36+,大约 1 GB 内存,Debian 5,无交换空间事件

我已经learned我可以通过调用 mlockall(MCL_CURRENT | MCL_FUTURE); 来防止交换,但想知道我是否真的需要更新我的机器。

最佳答案

不,程序代码页被内存映射到进程的地址空间,与任何其他 mmap() 没有太大区别,因此如果您长时间不访问这些页面时间,它们最终可以从 RAM 中删除。为避免这种情况,只需使用 mlockall() 调用即可。

关于linux - linux 是否按需加载程序页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com