2014-01-13 48 views
0

如何將自定義操作系統內核重定向到高內存,以便地址0xABCD變爲0xFFFFFF800000ABCD? (內核已經由引導加載程序從地址0x100000開始加載。)我當前的解決方案會在未映射的地址上生成頁面錯誤,這會由於IDT尚未初始化而升級爲三重錯誤。將內核重新加載到高內存中

+1

爲什麼這很重要?如果你要有一個帶有地圖的操作系統,只要把它放在自己的空間裏,無論方便。如果它已經加載了實際地址001xxxxx,並且設置了一張映射物理001xxxxx到虛擬01xxxxxx的映射,那麼它應該能夠實現虛擬到虛擬的轉換,而無需其他任何欺騙。如果你想然後在虛擬0xFFFFFF處複製操作系統頁面...所有你需要做的就是修改內存映射,但是一旦你到達這裏,我看不到太多的觀點。 –

回答

1

不要明確地移動你的內核。

而是使用分頁。首先,在低內存中設置所有內容,然後啓用分頁並將內核映射(不移動)爲高。沒有複製涉及的字節。