首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux:获取父页面和派生子页面之间的共享

问linux:获取父页面和派生子页面之间的共享
EN

Stack Overflow用户
提问于 2013-03-11 05:56:39
回答 1查看 439关注 0票数 0

据我所知,Linux不会将所有父进程内存复制到子进程的单独页面中,它会执行写时复制。在任一进程修改(写入)映射(共享)页面中的某个内存位置之前,我们会将子虚拟地址空间和父虚拟地址空间映射到相同的物理内存位置(相同的物理页面)。

我想知道是否有可用的工具可以显示进程共享的物理内存页。或者任何给出虚拟地址->物理地址映射的工具。这样我就可以实际查看物理地址并检查进程是否映射到相同的物理内存。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-11 06:19:44

我不知道是否有专门的工具可用,但是所有需要的信息都应该已经通过/proc文件系统导出了。

您的问题中给出的特殊用例甚至在相关文档中也有明确提到。( linux-src-directory/Documentation/vm/pagemap.txt或online https://www.kernel.org/doc/Documentation/vm/pagemap.txt):

使用页面映射了解进程的内存使用情况的一般过程如下:

打开/proc/pid/

  1. 以确定内存空间的哪些部分映射到什么。
  2. 选择您感兴趣的映射--所有映射、特定库、堆栈或堆等。
  3. 打开/proc/pid/
  4. 并查找要从examine.
  5. Read /proc/kpagecount和/或/proc/kpageflag为每一页创建u64的页。对于您刚刚读取的每个PFN,在文件中查找该条目,并读取所需的数据。

例如,要查找“唯一集大小”(USS),这是一个进程正在使用的未与任何其他进程共享的内存量,您可以遍历进程中的每个映射,找到PFN,在kpagecount中查找这些映射,并对仅被引用一次的页数进行总计。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15328163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档