标签: c kvm
我在linux上使用gcc编译了一个静态程序,并在kvm下运行它。我在访客内存中检查了这个进程的每个页表条目,发现有些页面已经映射而有些页面没有。这是按需分页的功能吗?我的问题是,是否有一个解决方案使所有的pte存在并映射到页表中? 例如。我分叉一个新进程并加载一个新的elf二进制文件,如何使每个页面映射到这个新进程的页表中。 感谢
答案 0 :(得分:4)
尝试以下系统调用:
#include <sys/mman.h> int mlockall(int flags);
使用MCL_FUTURE设置flags参数,它会将所有当前和未来页面锁定到内存中。你可以找到关于它的更多信息here或只输入“man mlockall”,你会得到一堆信息。
答案 1 :(得分:3)
这个的Linux API是mlock()。
但是,如果您尝试在运行在KVM之上的Linux VM中执行此操作,我认为用户模式代码无法实现此功能。半虚拟化的Linux内核可能可以访问它可以用于此类事情的某些KVM API,但有点怀疑它会这样做。