簡體   English   中英

操作系統啟動,分頁或無分頁時,內存管理的類型是什么?

[英]What's the type of memory management when the OS booted,paging or no-paging?

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

我假設“當OS啟動時”,你的意思是“處理器啟動時”。 在這種情況下,它顯然取決於處理器的架構。

對於x86,分頁由CR0寄存器中的位31控制(如果該位置1,則啟用分頁)。 來自英特爾軟件開發人員手冊 ,第3卷,第8.1.1節。 “復位后的處理器狀態”,您可以看到復位后CR0中的值為0x60000010,這意味着禁用了分頁。

如果您想知道在內核啟動之前是否啟用了分頁,那么它取決於引導加載程序的功能。 引導規范(例如,由GRUB實現) 規定應禁用分頁:

'CR0'

必須清零位31(PG)。 必須設置位0(PE)。 其他位都是未定義的。

x86 CPU在重置后以實地址模式開始執行。 操作系統需要先將CPU切換到保護模式,然后再啟用頁面轉換。 您無法在實模式下切換到保護模式(您獲得#GP),也無法在實模式下啟用它。 因此,在x86上,操作系統首先禁用頁面轉換(除非先前已由OS引導加載程序啟用,這很少見),然后在它准備就緒時啟用它(即構建了頁表並加載了CR3)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM