我如何知道在程序执行期间的某个时刻哪些虚拟地址/页面已被写入

问题描述 投票:0回答:0

我正在从主进程中分叉出一个子进程。物理地址/页面在分叉后被共享,但后来由于写时复制方案,一些物理页面被复制。我需要知道由于 COW 而重复的虚拟地址/页面。我知道一种机制 - 从 /proc/self/maps 或 smaps 文件中读取虚拟地址范围,并在 /proc/self/pagemap 中查找页面信息以获取 PFN,并在 /proc/kpagecount 中查找 PFN 以查看进程引用的数量等。但是,这需要管理员/根权限。 还有其他不需要 root/admin 访问权限的方法吗?

我尝试了上面解释的方法,但未能成功,因为不幸的是我没有 root/admin 权限。

linux memory-management
© www.soinside.com 2019 - 2024. All rights reserved.