假設我的32位機器只有500MB的記憶體,“內核直接映射了前896M物理記憶體”應該怎么分析?
物理記憶體4G的情況下,
內核直接映射了前896M物理記憶體,這是內核初始化記憶體管理器時建立的映射,這里的頁表中的Present欄位(為1表示所指的頁在主存中),這套頁表只確保線性一致映射,保證任何時刻內核都能直接訪問物理記憶體(先不管高端記憶體)。
這大家應該沒有歧義吧?
但是,文章中https://blog.csdn.net/tommy_wxie/article/details/17122923中:
“
Linux內核高端記憶體的由來
當內核模塊代碼或執行緒訪問記憶體時,代碼中的記憶體地址都為邏輯地址,而對應到真正的物理記憶體地址,需要地址一對一的映射,如邏輯地址0xc0000003對應的物理地址為0×3,0xc0000004對應的物理地址為0×4,… …,邏輯地址與物理地址對應的關系為
物理地址 = 邏輯地址 – 0xC0000000:這是內核地址空間的地址轉換關系,注意內核的虛擬地址在“高端”,但是ta映射的物理記憶體地址在低端。
”
里面的一句,需要地址一對一的映射??我理解不了,因為在物理記憶體500MB的情況下,還怎么一對一映射??剩下896-500怎么映射?
內核前896M的記憶體是“一對一映射”的,這句話對嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/39677.html
標籤:內核源代碼研究區
上一篇:設定目錄開發權,求大佬幫忙
