當操作系統啓動時,內存管理,分頁或不分頁的類型是什麼?這就是說cr0寄存器中的值控制着分頁的開啓/關閉。我猜在內核初始化開始時分頁關閉了,否則所有的內存訪問都是無效的。分頁在內核初始化期間設置,並且內核空間的所有映射必須設置爲有效。我對嗎?操作系統啓動,分頁或不分頁時,內存管理的類型是什麼?
1
A
回答
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)。
相關問題
- 1. 操作系統 - 分頁
- 2. 什麼將內容管理系統與一堆網頁分開?
- 3. 進程啓動時分頁(虛擬內存)系統中會發生什麼?
- 4. 內存管理由操作系統
- 5. 內存管理 - 分段和分頁
- 6. 操作系統:分頁問題
- 7. 操作系統內存分配地址
- 8. 操作系統內存分配
- 9. 64位操作系統內存分配
- 10. 分頁系統
- 11. 內存管理單元(MMU)如何通知操作系統頁表已更新?
- 12. PHP內存vs操作系統分配的內存
- 13. 操作系統和內存管理(理論)
- 14. 評分和類似系統管理
- 15. 簡單的玩具操作系統內存管理
- 16. 我對內存管理和分頁的想法是否正確?
- 17. 分頁池內存或非分頁池內存? (windows驅動程序開發)
- 18. apt-get install是否依賴於操作系統(OS)的內核版本或操作系統的分佈?
- 19. 實際上Android是什麼?移動軟件或操作系統?
- 20. Android啓動時掛機操作系統
- 21. 嘗試在模擬的操作系統內存管理器中顯示分配內存的「映射」
- 22. 操作系統內存管理 - malloc()調用
- 23. 如何找出操作系統中分頁的大小
- 24. JavaMail中的part.getContent在不同的操作系統下的類型是什麼?
- 25. 移動操作系統與桌面操作系統有什麼不同
- 26. 什麼數據類型是32位操作系統中的16位和64位操作系統中的32位?
- 27. Java JVM保持對操作系統的內存分配
- 28. 操作系統,C和進程的內存分配
- 29. 內核內存在Windows操作系統中包含什麼?
- 30. 操作系統是否與CPU或內存相互作用