保护页面的mprotect(地址,大小,PROT_NONE)及其内存消耗

我使用memalign分配了一些内存,并使用mprotec(adde, size, PROT_NONE)将最后一页设置为警戒页面,因此无法访问此页面。

不可访问的页面是否消耗物理内存? 在我看来,内核可以安全地离线物理页面,对吧?

我也尝试疯狂(MADV_SOFT_OFFLINE)手动使物理内存脱机,但function总是失败。

任何人都可以通过mprotect(PROT_NONE)告诉我内核的内部行为,以及如何离线物理内存以节省物理内存消耗?

Linux应用程序正在使用虚拟内存 。 只有内核管理物理RAM。 应用程序代码不会看到物理RAM。

使用mprotectPROT_NONE保护的段不会消耗任何RAM。

你应该用mmap(2)分配你的段(也许你想要MAP_NORESERVE )。 将memalignmprotect混合可能会破坏libc不变量。

仔细阅读madvise(2)手册页。 MADV_SOFT_OFFLINE可能需要特殊配置的内核。