linux中高端內存和低端內存的概念【轉】


轉自:http://blog.csdn.net/hdujinhuihui/article/details/8686817

高端內存是Linux中一個重要的概念,初涉Linux時曾經對這個概念非常迷惑。實際上這個概念比較簡單,理解這個概念,需要追溯一下Linux的內存管理。

    從前,CPU的地址總線只有32位。32的地址總線無論是從邏輯上還是從物理上都只能描述4G的地址空間,在物理上理論上最多擁有 4G內存(除了IO地址空間,實際內存容量小於4G),邏輯空間也只能描述4G的線性地址空間。為了合理的利用4G空間,Linux采用了3:1的策略,即內核占用1G的線性地址空間,用戶占用3G的線性地址空間。所以用戶進程的地址范圍從0~3G,內核地址范圍從3G~4G,也就是說,內核空間只能管理 1G的內存。對於如此緊張的線性地址資源,內核空間與用戶空間的肆意瓜分,導致了內存管理上的問題:當物理內存大於1G時,內核線性地址空間小於實際的物理內存容量,內核如何實現對大於1G內存的管理呢?說到這里,需要提一下內核空間對內存的管理方法。一方面為了提高內核空間對內存的管理效率;另一方面,為了簡化內核空間對內存的管理方法,內核采用線性映射的方法實現對內存的管理,從Linux實現的方法來看,物理地址與內核的虛擬地址只差一個偏移量。所以,當物理內存大於1G時,物理內存無法全部映射到內核線性地址空間,這就產生了上述問題。

        從上述描述可以看出,地址空間大於1G的內存區域稱之為高端內存,同理,小於1G的內存區域稱之為低端內存。高端內存的管理需要進行非線性映射,為此,在內核線性地址空間預留了128M的空間,位於線性地址空間的高端。如今,CPU的地址總線都擴大到64位了,線性地址資源非常豐富,所以,可以給內核空間預留足夠的線性地址資源,在最近一段時間內,內核線性地址資源與物理內存容量之間的矛盾將不再突出,高端內存的概念也就在64位CPU上消失了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM