【问题标题】:Using /proc/[pid]/pagemap使用 /proc/[pid]/pagemap
【发布时间】:2014-03-20 17:57:36
【问题描述】:

我知道这里有一些关于页面映射文件的信息。但似乎没有人指出如何引用文件中的条目。它是否被虚拟地址偏移?我可以取一个虚拟地址 VA 并简单地 lseek 来抵消 VA 吗?还是按页面?如果是这样,我如何检索页码,因为地图只是按顺序列出它们。我正在尝试在虚拟地址和物理地址之间进行转换,并且使用虚拟地址作为偏移量总是返回相同的数字,无论我在哪里寻找。

谢谢

@leeduhem:是的,我有。这是相关部分: 3. 打开 /proc/pid/pagemap 并查找您要检查的页面。 4.从pagemap中为每个页面读取一个u64。

这对我没有帮助。它要我寻找页面,但我怎么知道页面的入口在哪里?

【问题讨论】:

标签: linux process proc


【解决方案1】:

有一个工具可以帮助您从页面地图文件中获取所需的信息。

http://fivelinesofcode.blogspot.com/2014/03/how-to-translate-virtual-to-physical.html

【讨论】:

  • 为什么offset没有在这个函数中使用?我将offset 称为maps 条目中的第三个字段
  • 是否maps 条目offset 是支持映射的特定文件/设备+inode 的偏移量?
  • Paschalis,我不太明白你的问题,但你指的是“如果交换比特 5-54 交换偏移量”:kernel.org/doc/Documentation/vm/pagemap.txt
  • 嗯...我什至不明白我前段时间问你的问题。似乎我期待 maps 条目中的 offset 用于索引页面映射文件。
【解决方案2】:

您将虚拟地址除以页面大小(通常为 0x1000 或 4096)并使用它在 /proc/self/pagemap 中建立索引。分割后的部分称为 PFN,即页框号。

拉里

【讨论】:

    猜你喜欢
    • 2014-03-17
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多