我在Linux上使用gcc编译了一个静态程序,并在kvm下运行它。我检查了来宾内存中此过程的每个页表条目,发现有些页面已映射,有些没有。这是按需分页的功能吗?我的问题是是否存在解决方案,以使所有pte都存在并映射到页表中?
例如。我派生一个新进程并加载一个新的elf二进制文件,如何使每个页面映射到此新进程的页表中。
谢谢

最佳答案

试用以下系统调用:

#include <sys/mman.h>

int mlockall(int flags);

使用MCL_FUTURE设置flags参数,它将把所有当前和将来的页面锁定到内存中。您可以找到有关here的更多信息,或直接输入“man mlockall”,您将获得很多信息。

关于c - 如何使页表中的进程的每一页都呈现出来?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3355790/

10-10 21:31