小编Nar*_*uto的帖子

如何在Linux中解码/ proc/pid/pagemap条目?

我试图破译如何使用/ proc/pid/pagemap来获取给定页面集的物理地址.假设从/ proc/pid/maps,我得到对应堆的虚拟地址afa2d000-afa42000.我的问题是如何使用此信息遍历页面映射文件,并找到对应于地址afa2d000-afa42000的物理页面框架.

/ proc/pid/pagemap条目采用二进制格式.有没有工具可以帮助解析这个文件?

linux linux-kernel memory-address

12
推荐指数
3
解决办法
8243
查看次数

打印内核的页表条目

具有4级页表的虚拟内存映射:

0000000000000000 - 00007fffffffffff (=47 bits) user space, different per mm
ffff800000000000 - ffff80ffffffffff (=40 bits) guard hole
ffff880000000000 - ffffc7ffffffffff (=64 TB) direct mapping of all phys. memory
ffffc80000000000 - ffffc8ffffffffff (=40 bits) hole
ffffc90000000000 - ffffe8ffffffffff (=45 bits) vmalloc/ioremap space
ffffe90000000000 - ffffe9ffffffffff (=40 bits) hole
ffffea0000000000 - ffffeaffffffffff (=40 bits) virtual memory map (1TB)
ffffffff80000000 - ffffffffa0000000 (=512 MB)  kernel text mapping, from phys 0
ffffffffa0000000 - fffffffffff00000 (=1536 MB) module mapping space
Run Code Online (Sandbox Code Playgroud)

我知道内核尝试直接将物理地址映射到从PAGE_OFFSET直接映射区域开始的虚拟地址

ffff880000000000 …
Run Code Online (Sandbox Code Playgroud)

linux

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

linux ×2

linux-kernel ×1

memory-address ×1