我正在尝试引导一个自定义内核。QEMU是GDT地址上的页面错误。为什么会这样呢?我认为在我使用lgdt指令加载它之后,不再需要GDT的地址了。如果还需要它,我怎样才能保持它呢?(我不能简单地将PTE指向GDT地址,因为我只有其中的2048个,它们都是指向内核代码所必需的。)
发布于 2014-01-16 00:35:05
看起来你对x86中的MMU误解了。
要确定数据的物理地址,处理器采用逻辑地址(在访问内存时使用的地址)和段选择器,将其通过分段单元生成线性地址,然后将其映射到启用分页单元的物理地址。
现在来看一下lgdt 指令描述
它们是直接加载线性地址(即不是段相对地址)和受保护模式的限制的唯一指令。
当分页未启用时,线性地址将直接映射到物理地址,因此您可以说您位于物理空间中。但是,当您启用分页时,Dorothy离开堪萨斯:任何地址(除了页面目录的物理地址CR3寄存器)现在都位于线性空间中,并且正在进行分页转换。
至于您的问题:看起来您只使用了两个页面目录条目。为什么?再试一次鲍勃是你叔叔。
https://stackoverflow.com/questions/21148755
复制相似问题