linux中的高階低端記憶體以及邏輯虛擬位址

2021-05-24 03:25:47 字數 427 閱讀 1657

內存在核心中以頁表示,頁對應的是物理記憶體,而不是虛擬記憶體。

由於體系結構的關係,核心並不能對所有頁一視同仁,因此就有了不同的區。

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的位址空間,在物理上理論上最多擁有...