Linux内核虚拟到物理地址转换

时间:2015-12-29 17:52:16

标签: memory-management linux-kernel paging

我有一个位于内核虚拟地址空间的虚拟地址,即 我希望将3GB< = vaddr< = 4GB转换为实际地址。

看一下内核源代码,我可以看到virt_to_phys()函数,它反过来使用:  __pa(x)((无符号长)(x) - VIRT_PHYS_OFFSET)。 那么这是否意味着可以通过这个等式将任何虚拟地址转换为物理地址?

phys_addr = virt_addr - PAGE_OFFSET(其中3GB< = virt_addr< = 4GB)或此地址转换是否适用于某些不同范围的virt_addr。

这是否意味着如果动态加载的内核模块KMod 0xf23dc038的.text部分的地址,那么模块符号可用的物理地址将是 0xf23dc038 - 0xc0000000?

如果是这种情况,那么内核页表的用途是什么?

提前致谢。

0 个答案:

没有答案