Linux記憶體管理之二 記憶體節點和記憶體分區

來源:互聯網
上載者:User

UMA和NUMA:
UMA(Uniform Memory Access),即一致性記憶體訪問。這種情況下,CPU訪問記憶體的任何位置,代價都是一樣的。
NUMA)(Non Uniform Memory Access),即非統一記憶體存取。這種情況下,CPU訪問不同位置的記憶體,代價是不一樣的。在多CPU情況下,對每個CPU來說有本地記憶體和遠端記憶體,訪問本地記憶體的代價比訪問遠端記憶體的代價小。確保CPU訪問記憶體代價最小,是非常重要的一點。

Linux支援多種硬體體繫結構,因此Linux必須採用通用的方法來描述記憶體,以方便對記憶體進行管理。為此,Linux有了記憶體節點、記憶體區、頁框的概念,這些概念也是一目瞭然的。
記憶體節點:主要依據CPU訪問代價的不同而劃分。多CPU下環境下,本地記憶體和遠端記憶體就是不同的節點。即使在單CPU環境下,訪問所有記憶體的代價都是一樣的,Linux核心依然存在記憶體節點的概念,只不過只有一個記憶體節點而已。核心以struct  pg_data_t來描述記憶體分區。
記憶體分區:Linux對記憶體節點再進行劃分,分為不同的分區。核心以struct zone來描述記憶體分區。通常一個節點分為DMA、Normal和High Memory記憶體區,具體下面再介紹。

頁框:Linux採用頁式記憶體管理,頁是實體記憶體管理的基本單位,每個記憶體分區又由大量的頁框組成。核心以struct page來描述頁框。頁框有很多屬性,這些屬性描述了這個頁框的狀態、用途等,例如是否被分配。


中的zone_mem_map是一個頁框的數組,它記錄了一個記憶體分區的所有頁框的使用方式。


DMA記憶體區:即直接記憶體存取分區,通常為實體記憶體的起始16M。主要是供一些外設使用,外設和記憶體直接存取資料訪問,而無需系統CPU的參與。
Normal記憶體區:從16M到896M記憶體區。
HighMemory記憶體區:896M以後的記憶體區。

為什麼高端記憶體的邊界是896M?這是因為,32位Linux虛擬記憶體空間為0-4G,其中0-3G用於使用者態,3G-4G用於核心態。這意味著核心只有1G的虛擬位址空間,如果實體記憶體超過1G,核心就無法映射了。Linux採取的策略是,核心地址空間的前896M採用固定映射,映射方法是:虛擬位址-3G = 物理地址,只能映射到物理地址的前896M。也就是說核心虛擬位址空間的3G到3G+896M這部分,頁表的映射是固定的,系統初始化時就建立起來。而虛擬位址空間的最後128M,也就是3G+896M到4G部分採用動態映射,也就是說頁表映射的物理地址可變的。在系統運行過程中,通過更新頁表,就可以映射到不同的物理地址,當然也包括高端實體記憶體。

這主要解決了兩個問題:第一,這可以使核心地址空間映射到高端實體記憶體;第二,虛擬位址空間的3G+896M到4G部分,連續的虛擬位址空間可以映射到非連續的實體記憶體,只要通過更新頁表就可以做到,這和使用者態的虛擬記憶體映射採用了同樣這種方法。這在沒有大段連續的空閑物理地址時,是非常重要的。

備用記憶體區:
在一個記憶體區分配頁時,如果這個記憶體區沒有滿足條件的記憶體頁,則需要從其它記憶體區或從其它記憶體節點分配。Linux為每個記憶體區都建立了備用記憶體區列表,當前記憶體區沒有滿足條件的記憶體時,就從備用記憶體區分配。比如,系統中有4個記憶體節點A,B,C,D,每個記憶體節點又分為DMA、Normal、HighMemory記憶體區。對節點B來說,記憶體區分配列表可能是B(HighMemory)、B(Normal)、B(DMA)、

A(HighMemory)、A(Normal)、A(DMA)、C(HighMemory)、C(Normal)、C(DMA)、D(HighMemory)、D(Normal)、D(DMA)。
分配記憶體時,優先從本地記憶體節點分配,再從其它記憶體節點分配。對一個記憶體節點,優先從HighMemory分配,再從Normal或DMA分配

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.