最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深度詳解Linux物理內(nèi)存組織結(jié)構(gòu)(看完秒懂)

2022-04-04 12:34 作者:補給站Linux內(nèi)核  | 我要投稿

系統(tǒng)調(diào)用mmap

  • 虛擬內(nèi)存區(qū)域使用起始地址和結(jié)束地址描述。鏈表按起始地址遞增排序。

  • mmap指定的偏移單位是字節(jié),mmap2指定的偏移單位是頁。ARM64架構(gòu)實現(xiàn)系統(tǒng)調(diào)用mmap。


系統(tǒng)調(diào)用munmmap

  • 系統(tǒng)調(diào)用munmap用來刪除內(nèi)存映射,有兩個參數(shù):起始地址、長度。主要委托給do_munmap。



  1. vma = find_vma(mm, start); // 根據(jù)起始地址找到要刪除的第一個虛擬內(nèi)存區(qū)域vma

  2. 如果只刪除虛擬內(nèi)存區(qū)域vam的部分,那么分裂虛擬內(nèi)存區(qū)域vma

  3. 根據(jù)結(jié)束地址找到要刪除的最后一個虛擬內(nèi)存區(qū)域vma

  4. 如果只刪除虛擬內(nèi)存區(qū)域last的一部分,那么分裂虛擬內(nèi)存區(qū)域vma

  5. 針對所有刪除目標,如果虛擬內(nèi)存區(qū)域被鎖定在內(nèi)存中(不允許換出到交換區(qū)),調(diào)用函數(shù)解除鎖定

  6. 調(diào)用此函數(shù),把所有刪除目標從進程虛擬內(nèi)存區(qū)域鏈表和樹中刪除,單獨組成一條臨時的鏈表

  7. 調(diào)用此函數(shù),針對所有刪除目標,在進程的頁表中刪除映射,并且從處理器的頁表緩存中刪除映射

  8. 調(diào)用此函數(shù)執(zhí)行處理器架構(gòu)特定的處理操作

  9. 調(diào)用此函數(shù),刪除所有目標

【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【891587639】整理了一些個人覺得比較好的學習書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。?!前100名進群領取,額外贈送一份價值699的內(nèi)核資料包(含視頻教程、電子書、實戰(zhàn)項目及代碼)?


體系結(jié)構(gòu)

  • 目前多處理器系統(tǒng)有兩種體系結(jié)構(gòu):


  • 非一致內(nèi)存訪問(Non-Unit Memory Access, NUMA):內(nèi)存被劃分成多個內(nèi)存節(jié)點的多處理器系統(tǒng)。訪問一個內(nèi)存節(jié)點花費的時間取決于處理器和內(nèi)存節(jié)點的距離。


  • 對稱多處理器(Symmetric Multi-Processor, SMP):即一致內(nèi)存訪問(Uniform Memory Access, UMA),所有內(nèi)存處理器訪問內(nèi)存花費的時間是相同的。



內(nèi)存模型

  • 內(nèi)存模型是從處理器角度看到的物理內(nèi)存分布,內(nèi)核管理不同內(nèi)存模型的方式存在差異。內(nèi)存管理子系統(tǒng)支持3種內(nèi)存模型:


  1. 平坦內(nèi)存(Flat Memory): 內(nèi)存的 物理地址空間是連續(xù)的,沒有空洞。

  2. 不連續(xù)內(nèi)存(Discontiguous Memory): 內(nèi)存的物理地址空間存在空洞,這種模型可以高效的處理空洞。

  3. 稀疏內(nèi)存(Space Memory): 內(nèi)存的物理地址空間存在空洞,如果要支持內(nèi)存熱插拔,只能選擇稀疏內(nèi)存模型。

三級結(jié)構(gòu)

  • 內(nèi)存管理子系統(tǒng)使用節(jié)點(node)、區(qū)域(zone)、頁(page)三級結(jié)構(gòu)描述物理內(nèi)存。

1.內(nèi)存節(jié)點

  1. NUMA體系的內(nèi)存節(jié)點,根據(jù)處理器和內(nèi)存的距離劃分;

  2. 在具有不連續(xù)內(nèi)存的NUMA系統(tǒng)中,表示比區(qū)域的級別更高的內(nèi)存區(qū)域,根據(jù)物理地址是否連續(xù)劃分,每塊物理地址連續(xù)的內(nèi)存是一個內(nèi)存節(jié)點。

  3. node是內(nèi)存管理最頂層的結(jié)構(gòu),在NUMA架構(gòu)下,CPU平均劃分為多個Node,每個Node都有自己的內(nèi)存控制器及內(nèi)存插槽。CPU訪問自己的Node上內(nèi)存速度快,訪問其他CPU關聯(lián)的內(nèi)存速度慢。UMA被當做只是一個Node的NUMA系統(tǒng)。

2.內(nèi)存區(qū)域

  1. 內(nèi)存節(jié)點被劃分為內(nèi)存區(qū)域。

3.物理頁

  1. 每個物理頁對應一個page結(jié)構(gòu)體,稱為頁描述符。內(nèi)存節(jié)點的pglist_data實例的成員node_mem_map指向該內(nèi)存節(jié)點包含的所有物理頁的頁描述符組成的數(shù)組。

  2. 頁是內(nèi)存管理中的最小單位,頁面中的內(nèi)存其物理地址是連續(xù)的,每個物理頁由struct page描述。為了節(jié)省內(nèi)存,struct page是一個聯(lián)合體。

  3. 頁,又稱為頁幀,在內(nèi)核當中,內(nèi)存管理單元MMU(負責虛擬地址和物理地址轉(zhuǎn)換的硬件)是把物理頁page作為內(nèi)存管理的基本單位。體系結(jié)構(gòu)不同,支持的頁大小也相同。

  4. 32位體系結(jié)構(gòu)支持4kb的頁;64位體系結(jié)構(gòu)支持8kb的頁;MIPS64架構(gòu)體系支持16kb的頁。

總結(jié)

  • 本文介紹了Linux內(nèi)存組織結(jié)構(gòu),先介紹了mmap munmmap的具體執(zhí)行流程。主要介紹了內(nèi)存模型,三級結(jié)構(gòu)節(jié)點、區(qū)域、頁相關內(nèi)容。




深度詳解Linux物理內(nèi)存組織結(jié)構(gòu)(看完秒懂)的評論 (共 條)

分享到微博請遵守國家法律
昌都县| 广宁县| 太保市| 浦江县| 黎川县| 上虞市| 额敏县| 武川县| 朝阳市| 博罗县| 家居| 沙洋县| 宁安市| 台前县| 句容市| 大兴区| 城口县| 霍邱县| 托克逊县| 乡城县| 桃园县| 榆树市| 平定县| 和林格尔县| 普宁市| 房产| 舟曲县| 天祝| 内黄县| 宜宾市| 永兴县| 游戏| 汨罗市| 嘉峪关市| 汾西县| 镇赉县| 固原市| 钦州市| 大连市| 阿合奇县| 罗山县|