2014-01-15 63 views
0

我試圖啓動一個定製的內核。 QEMU是GDT地址的頁面錯誤。爲什麼是這樣?我認爲使用lgdt指令加載後,GDT的地址就不再需要了。如果仍然需要,我該如何保持它? (我不能簡單地將PTE指向GDT地址,因爲我只有2048個指針,它們都是指向內核代碼所需的。)GDT與尋呼

回答

1

看起來你很容易誤解x86中的MMU。

爲了確定數據的物理地址,處理器取邏輯地址(訪問存儲器時使用的一個)和一個段選擇,把它通過分割單元以產生線性地址,並且然後地圖如果啓用了分頁單元,則將其轉換爲物理地址。

現在來看看lgdtinstruction description

他們是直接加載線性地址 唯一的指令(即,不是段相對地址),並在保護 模式的限制。

未啓用分頁,線性地址直接映射到物理地址,所以你可能會說,你是在一個物理空間。但是,當您啓用分頁,多蘿西離開堪薩斯州:任何地址(除了頁目錄CR3寄存器的物理地址)現在處於線性空間,並通過尋呼轉型去。

至於你的問題:它看起來像你只用了兩頁目錄條目。爲什麼?試試另一個,鮑勃是你的叔叔。

+0

我很抱歉,但你已經使用了這麼多的程序員的俚語,我不是很瞭解你說的話。你能否編輯你的答案來澄清?謝謝。 – wjk