高階記憶體與低端記憶體

2021-05-24 04:43:59 字數 1080 閱讀 9204

高階記憶體是

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上消失了。

高階記憶體與低端記憶體

高階記憶體是linux中乙個重要的概念,初涉linux時曾經對這個概念非常迷惑。實際上這個概念比較簡單,理解這個概念,需要追溯一下linux的記憶體管理。從前,cpu的位址匯流排只有32位,再早的就不再追溯了。32的位址匯流排無論是從邏輯上還是從物理上都只能描述4g的位址空間,在物理上理論上最多擁有...

高階記憶體和低端記憶體

高階記憶體是linux中乙個重要的概念,初涉linux時曾經對這個概念非常迷惑。實際上這個概念比較簡單,理解這個概念,需要追溯一下linux的記憶體管理。從前,cpu的位址匯流排只有32位,再早的就不再追溯了。32的位址匯流排無論是從邏輯上還是從物理上都只能描述4g的位址空間,在物理上理論上最多擁有...

高階記憶體和低端記憶體

高階 記憶體是linux中乙個重要的概念,初涉linux時曾經對這個概念非常迷惑。實際上這個概念比較簡單,理解這個概念,需要追溯一下linux的記憶體管理。從前,cpu的位址匯流排只有32位,再早的就不再追溯了。32的位址匯流排無論是從邏輯上還是從物理上都只能描述4g的位址空間,在物理上理論上最多擁...