我使用memalign分配了一些内存,并使用mprotec(adde, size, PROT_NONE)
将最后一页设置为警戒页面,因此无法访问此页面。
不可访问的页面是否消耗物理内存? 在我看来,内核可以安全地离线物理页面,对吧?
我也尝试疯狂(MADV_SOFT_OFFLINE)手动使物理内存脱机,但function总是失败。
任何人都可以通过mprotect(PROT_NONE)
告诉我内核的内部行为,以及如何离线物理内存以节省物理内存消耗?
Linux应用程序正在使用虚拟内存 。 只有内核管理物理RAM。 应用程序代码不会看到物理RAM。
使用mprotect
& PROT_NONE
保护的段不会消耗任何RAM。
你应该用mmap(2)分配你的段(也许你想要MAP_NORESERVE
)。 将memalign
与mprotect
混合可能会破坏libc不变量。
仔细阅读madvise(2)手册页。 MADV_SOFT_OFFLINE
可能需要特殊配置的内核。