【问题标题】:How does the Linux kernel create the /proc/$pid/maps file?Linux 内核如何创建 /proc/$pid/maps 文件?
【发布时间】:2016-03-20 15:52:24
【问题描述】:

我正在做一些内存自省,它需要我知道 proc/$pid/maps 是如何创建的。我对第 2750 行 http://lxr.free-electrons.com/source/fs/proc/base.c 中的代码有点困惑我注意到这个结构中有一个映射定义,但我想知道每个 pid_entry 是哪个内核函数创建映射文件。内核模块或代码块的链接就足够了。

【问题讨论】:

  • /proc 是一个虚拟文件系统。这些文件不受物理存储的支持,它们的内容是在您阅读时生成的。从这个意义上说,文件永远不会“创建”。

标签: c linux-kernel operating-system kernel system-calls


【解决方案1】:

你对链接做了一些奇怪的事情。

点击几个定义会发现文件是在这里按需生成的: https://github.com/torvalds/linux/blob/bcf876870b95592b52519ed4aafcf9d95999bc9c/fs/proc/task_mmu.c#L271

(至少对于常见的 mmu 情况)

常见的问题:你为什么要问?

【讨论】:

  • 我想输出在 /proc/$pid/maps 中的进程映射文件中看到的相同数据,只使用内存自省。
猜你喜欢
  • 2010-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-15
  • 2010-12-19
  • 1970-01-01
  • 2011-02-01
相关资源
最近更新 更多