內存在核心中以頁表示,頁對應的是物理記憶體,而不是虛擬記憶體。
由於體系結構的關係,核心並不能對所有頁一視同仁,因此就有了不同的區。
zone_dma 這個區包含的頁能夠用來執行dma操作。
zone_normal 這個區包含的都是能正常對映的頁。
zone_highmem 這個區包含「高階記憶體」,其中的頁不能永久地對映到核心位址空間,在申請這部分位址的時候,只能用返回page*指標的記憶體分配函式,同時,如果要是用它,必須用kmap進行對映。用完之後用kunmap解除對映。
有時候在核心中邏輯位址和核心虛擬位址,對於低端記憶體來說,邏輯位址就是核心虛擬位址。
他們的不同在於邏輯位址和實體地址之間的關係是線性的,是一一對應的,而虛擬位址則沒有這個要求。
而高階記憶體,不能直接對映,因此沒有邏輯位址,只能通過臨時對映到虛擬位址進行訪問。
高階記憶體與低端記憶體
高階記憶體是 linux 中乙個重要的概念,初涉 linux 時曾經對這個概念非常迷惑。實際上這個概念比較簡單,理解這個概念,需要追溯一下 linux 的記憶體管理。從前,cpu的位址匯流排只有 32位,再早的就不再追溯了。32的位址匯流排無論是從邏輯上還是從物理上都只能描述 4g的位址空間,在物理...
高階記憶體與低端記憶體
高階記憶體是linux中乙個重要的概念,初涉linux時曾經對這個概念非常迷惑。實際上這個概念比較簡單,理解這個概念,需要追溯一下linux的記憶體管理。從前,cpu的位址匯流排只有32位,再早的就不再追溯了。32的位址匯流排無論是從邏輯上還是從物理上都只能描述4g的位址空間,在物理上理論上最多擁有...
高階記憶體和低端記憶體
高階記憶體是linux中乙個重要的概念,初涉linux時曾經對這個概念非常迷惑。實際上這個概念比較簡單,理解這個概念,需要追溯一下linux的記憶體管理。從前,cpu的位址匯流排只有32位,再早的就不再追溯了。32的位址匯流排無論是從邏輯上還是從物理上都只能描述4g的位址空間,在物理上理論上最多擁有...