linux的high memory

線性地址

這裏掠過分段和分頁的概念

線性地址概念:線性地址是分段變換後的地址

以下是囉嗦把版本的,

CPU在保護模式下(保護模式是什麼?),“段基址+段內偏移地址”叫做線性地址(是用分段來管理虛實地址轉換吧,一直疑問分段在linux中應用),如果沒開分頁的話,線性地址則是物理地址;而如果開了分頁,線性地址=虛擬地址,

high memory

這裏以32位來講,有high memory原因是CPU尋址位數不夠,導致尋址空間不足(有點抽象,有沒有例子),,,而64位系統下不會有high memory

以linux爲例子,32位的CPU,最大尋址範圍爲2^32 - 1也就是4G的線性地址空間,Linux人爲的規定把4G虛擬地址空間(32位地址最多尋址4G)分爲3G+1G,

也就是說,kernal擁有1G的地址空間,用戶態擁有3G的地址空間,

或者說,kernel可以尋址1G.這裏問題來了,如果系統佔用超過了1G,其他超過尋址空間的部分,就是high memory,相對的就是能直接訪問到的low memory,

總結:high memory是指物理內存中內核空間不能直接訪問到的部分

high memory 和low memory的訪問方法

low memory採用最簡單的 物理地址+偏移=kernel虛擬地址空間

high memory部分,linux先預留了128MB來進行動態尋址,(具體怎麼動態尋址呢TODO)

參考資料

  1. [線性地址](https://www.zhihu.com/question/29918252)
  2. [high memory](https://blog.csdn.net/windyf2013/article/details/80787672)
  3. 才發現understanding the linux kernel裏也有..

TODO

  1.  linux中分段的應用
  2. 保護模式的定義
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章