【问题标题】:What' the role of low 22 bits (0 ~21bit) in page directory table? [duplicate]页目录表中低22位(0~21位)的作用是什么? [复制]
【发布时间】:2014-02-11 05:31:21
【问题描述】:

我知道内核虚拟地址中使用的高 10 位。
谢谢

【问题讨论】:

标签: linux kernel


【解决方案1】:

我觉得你有点困惑。内核地址空间位于 0xC0000000 地址之上。页目录上的位指向页表。在页面大小为 4KB 的 32 位架构上是这样的:

  1. 地址中的前十位指向页面目录
  2. 地址中的后十位指向页表
  3. 地址中的最后 12 位指向 页面

让我们看看虚拟地址0x2003ff01是如何(大致)完成的:

  1. 前十位:0x80 作为偏移量添加到全局页面目录(由 x86 架构中的cr3 寄存器指向)。那里存储的地址必须与进程页表相对应。
  2. 第二十位:0x3FF对应页表。这个偏移量被添加到页表指针中,你就得到了你正在寻找的页面的地址。
  3. 将最后 12 位添加到 Page 的指针中,您就得到了您正在寻找的内存单元。

这或多或少是在 Linux 中完成该过程的方式。我错过了很多规范,只是想给出一个一般性的解释。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 2011-10-28
    • 1970-01-01
    • 2015-07-17
    • 2016-01-26
    • 1970-01-01
    • 2010-11-19
    • 2013-11-06
    相关资源
    最近更新 更多