linux高端內存的理解
在linux(32位系統)中,地址空間映射是這樣的,把0xc0000000~0xffffffff這1GB內核地址空間劃分成2個部分低端的796MB + 高端的128MB,低端796MB就使用f映射,直接映射到物理內存的前796MB上,而高端128MB就用來隨時變更g來映射到物理內存超過796MB的范圍上,這里對應了3種映射算法:動態映射,永久內核映射,臨時映射。
說下“映射”是什么,其實就是x86的內存分頁機制,我們只要通過修改分頁的頁表項就可達到更改 “映射” 的目的。
查看系統內存映射:
dmesg | grep "Memory:" -n -A 8
- fixmap為固定映射空間,用于臨時映射
- pkmap為內核永久映射空間
- vmalloc為映射到“內核動態映射空間”
- lowmem是低端內存,剩余的就是用戶線性地址空間。
《Understanding the linux kernel》上有另外一幅圖,可以對比來看。
Reference
[1].http://blog.csdn.net/littlehedgehog/article/details/2796669
[2].http://blog.csdn.net/littlehedgehog/archive/2008/08/19/2796669.aspx
來自:http://my.oschina.net/lvyi/blog/339026
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!