/ proc / <pid> / maps

时间:2016-02-22 13:28:36

标签: linux memory-management linux-kernel

我想写一个可以解析的程序 /proc/<pid>/maps的输出以便进行分类 他们分为不同的类别:

  • Image:该页面是二进制文件的映射或其中一个必需的库
  • Mapped file:页面会映射特定文件,例如字体
  • Stack
  • Heap
  • Private data
  • Shareable

正如您可能已经猜到的,主要想法是开发相当于sysinternals的vmmap工具 对于Linux。

我使用pathname字段来确定页面可以与哪个类别相关联。

如果pathname/proc/<pid>/exe符号链接的路径相同,或者是 它是一个依赖项,因此它转到Image

如果pathname是一个文件且不是图片的一部分,那么它就是Mapped File

如果pathname[stack:<tid>][heap]等模式匹配, 然后该页面分别是StackHeap

当我在寻找有关/proc/<pid>/maps的一些信息时,我来到了这里 这个stackoverflow post missing-heap-section-in-proc-pid-maps,我发现如果你用size参数调用malloc 在某个阈值之上,创建了一个私有匿名映射 增加堆的大小。

  1. 如何知道匿名映射是独立堆还是其他什么?
  2. 我应该将所有匿名映射视为[heap]吗?如果没有,如何对它们进行分类?
  3. 哪个页面可以放入Private DataShareable类别?
  4. 谢谢!

0 个答案:

没有答案