2012-04-12 41 views
1

當操作系統啓動時,內存管理,分頁或不分頁的類型是什麼?這就是說cr0寄存器中的值控制着分頁的開啓/關閉。我猜在內核初始化開始時分頁關閉了,否則所有的內存訪問都是無效的。分頁在內核初始化期間設置,並且內核空間的所有映射必須設置爲有效。我對嗎?操作系統啓動,分頁或不分頁時,內存管理的類型是什麼?

回答

2

我認爲用「當OS引導」,你的意思是「當處理器上電」。在這種情況下,它顯然取決於處理器的架構。

爲x86,尋呼是通過在CR0寄存器位31控制(如果該位被設置,尋呼使能)。從Intel's Software Developer Manual,第3卷,第8.1.1節。 「復位後的處理器狀態」,您可以看到復位後CR0中的值爲0x60000010,這意味着分頁被禁用。

如果你想在內核開始前才知道,如果啓用了分頁,這取決於引導程序做什麼。所述Multiboot規範(由實現,例如,GRUB)dictates尋呼應該被禁用:

「CR0」

位31(PG)必須被清除。位0(PE)必須設置。其他位全部未定義。

1

x86 CPU的啓動下一個復位的真實地址模式執行。操作系統需要先將CPU切換到保護模式,然後才能啓用頁面翻譯。你不能一起從實模式切換到保護模式(你得到一個#GP),也不能在真實模式下啓用它。所以,在x86操作系統第一禁用頁面轉換運行(除非它由操作系統引導程序,這是罕見的提前使能),然後使它時,它已經準備好(即構建了頁表和加載CR3)。

相關問題