我编写了一个程序守护程序,当计算机的硬盘控制器崩溃时,它会启动某种自我修复程序。该程序已经可以正常运行,但我担心该程序(大约 18KB 的编译文件大小)可能不会被操作系统完全加载到 RAM 中,并且 - 当我真的很不走运时 - 一些程序页面必须从确切地说,当程序必须激活并且不再可能访问磁盘时。
毕竟,大多数时候程序都处于无限循环中,检查是否一切正常,并且 95% 的程序代码没有被使用。所以,我认为,内核可以通过从 RAM 中删除未使用的程序页面来优化 RAM 使用。
所以,我的问题是:Linux 是否将所有程序代码页加载并保存到内存中,一旦程序启动,就无需再次访问硬盘来运行程序代码本身?
技术细节:Linux Kernel 2.6.36+,大约 1 GB RAM,Debian 5,没有活动交换空间
我已经知道我可以通过调用来防止交换mlockall(MCL_CURRENT | MCL_FUTURE);
,但想知道我是否真的需要更新我的机器。