【发布时间】:2014-02-11 05:31:21
【问题描述】:
我知道内核虚拟地址中使用的高 10 位。
谢谢
【问题讨论】:
-
在此处查看接受的答案:stackoverflow.com/questions/10671147/…
我知道内核虚拟地址中使用的高 10 位。
谢谢
【问题讨论】:
我觉得你有点困惑。内核地址空间位于 0xC0000000 地址之上。页目录上的位指向页表。在页面大小为 4KB 的 32 位架构上是这样的:
让我们看看虚拟地址0x2003ff01是如何(大致)完成的:
cr3 寄存器指向)。那里存储的地址必须与进程页表相对应。0x3FF对应页表。这个偏移量被添加到页表指针中,你就得到了你正在寻找的页面的地址。这或多或少是在 Linux 中完成该过程的方式。我错过了很多规范,只是想给出一个一般性的解释。
希望这会有所帮助!
【讨论】: