2014-01-15 64 views
0

我试图启动一个定制的内核。 QEMU是GDT地址的页面错误。为什么是这样?我认为使用lgdt指令加载后,GDT的地址就不再需要了。如果仍然需要,我该如何保持它? (我不能简单地将PTE指向GDT地址,因为我只有2048个指针,它们都是指向内核代码所需的。)GDT与寻呼

回答

1

看起来你很容易误解x86中的MMU。

为了确定数据的物理地址,处理器取逻辑地址(访问存储器时使用的一个)和一个段选择,把它通过分割单元以产生线性地址,并且然后地图如果启用了分页单元,则将其转换为物理地址。

现在来看看lgdtinstruction description

他们是直接加载线性地址 唯一的指令(即,不是段相对地址),并在保护 模式的限制。

未启用分页,线性地址直接映射到物理地址,所以你可能会说,你是在一个物理空间。但是,当您启用分页,多萝西离开堪萨斯州:任何地址(除了页目录CR3寄存器的物理地址)现在处于线性空间,并通过寻呼转型去。

至于你的问题:它看起来像你只用了两页目录条目。为什么?试试另一个,鲍勃是你的叔叔。

+0

我很抱歉,但你已经使用了这么多的程序员的俚语,我不是很了解你说的话。你能否编辑你的答案来澄清?谢谢。 – wjk