linux內(nèi)核源碼學(xué)習(xí)

linux內(nèi)核源碼學(xué)習(xí)

ID:32866026

大?。?82.48 KB

頁數(shù):24頁

時(shí)間:2019-02-16

linux內(nèi)核源碼學(xué)習(xí)_第1頁
linux內(nèi)核源碼學(xué)習(xí)_第2頁
linux內(nèi)核源碼學(xué)習(xí)_第3頁
linux內(nèi)核源碼學(xué)習(xí)_第4頁
linux內(nèi)核源碼學(xué)習(xí)_第5頁
資源描述:

《linux內(nèi)核源碼學(xué)習(xí)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Linux內(nèi)核源碼學(xué)習(xí)--淺談內(nèi)存管理郭帆學(xué)習(xí)步驟?理論調(diào)研?Linux內(nèi)核的整體結(jié)構(gòu)?每個(gè)子系統(tǒng)的功能及子系統(tǒng)之間的聯(lián)系?子系統(tǒng)的組成模塊及對(duì)應(yīng)的詳細(xì)功能和基本原理?源碼閱讀(針對(duì)特定子系統(tǒng))?模塊分解(找到相應(yīng)的源文件)?熟悉主要數(shù)據(jù)結(jié)構(gòu)?閱讀源碼第一階段:理論調(diào)研?目標(biāo)?熟悉Linux內(nèi)核的整體架構(gòu)?熟悉各個(gè)子系統(tǒng)的功能及相互之間的聯(lián)系?熟悉子系統(tǒng)內(nèi)部的模塊組成及功能?方法?閱讀經(jīng)典書籍:《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》、《深入理解Linux內(nèi)核》等?博客、論壇等.1.1Linux內(nèi)核架構(gòu)?Linux內(nèi)核特點(diǎn):模塊化、分層、耦合度高1.2Linux內(nèi)存管理--機(jī)制?Linux采

2、用頁式內(nèi)存管理?應(yīng)用給出的地址是虛擬地址,需要通過查詢頁表轉(zhuǎn)換成物理內(nèi)存地址1.2內(nèi)存管理子系統(tǒng)--功能?功能:提供對(duì)虛擬內(nèi)存空間和物理內(nèi)存的管理0GB3GB4GBKernel虛擬內(nèi)存VirtualAddressSpaceUserSpace(Stack,Heap...)Space管理LinearMappedPageMapped物理內(nèi)存PhysicalMemory管理0GB1GB4GB1.2內(nèi)存管理子系統(tǒng)--架構(gòu)1.3內(nèi)存管理子系統(tǒng)--子模塊?物理內(nèi)存管理?物理內(nèi)存頁分配、回收、遷移、交換?虛擬內(nèi)存管理?虛擬內(nèi)存分配、內(nèi)存映射、頁表管理、虛擬空間管理?頁緩存管理?頁緩存的分配、管理

3、、預(yù)取、訪問?異常管理?內(nèi)存相關(guān)的異常管理機(jī)制1.3子模塊分析--分配與映射?C語言中的malloc在內(nèi)核中包含兩步?分配虛擬地址區(qū)間?訪問虛擬地址時(shí)分配物理頁,建立頁表映射?malloc(<128KB)操作的執(zhí)行流程?用戶態(tài)?應(yīng)用調(diào)用malloc申請(qǐng)內(nèi)存->malloc從空閑堆空間緩沖區(qū)鏈表申請(qǐng)內(nèi)存,若有內(nèi)存則返回,若不足則調(diào)用sys_brk()擴(kuò)充進(jìn)程的堆空間?內(nèi)核態(tài)1.在mm_struct中的堆上界brk延伸到newbrk:即申請(qǐng)一塊vma,vma.start=brkvma.end=newbrk2.當(dāng)進(jìn)程訪問其中某個(gè)虛擬地址,觸發(fā)缺頁中斷再申請(qǐng)物理頁并進(jìn)行映射第二階段:源碼

4、閱讀?目標(biāo)?熟悉每個(gè)源文件的功能?熟悉主要數(shù)據(jù)結(jié)構(gòu)?詳細(xì)分析特定模塊的源碼?方法:?從點(diǎn)切入,追蹤調(diào)用路徑?用調(diào)試手段分析源碼(printk、kgdb、dump_stack)?仔細(xì)閱讀注釋,參考源碼解讀2.1源文件分類?物理內(nèi)存管理?內(nèi)存分配?page_alloc:伙伴分配系統(tǒng)?debug-pagealloc:伙伴分配系統(tǒng)輔助函數(shù)?slab、slub、slob:基于伙伴系統(tǒng)之上的內(nèi)存分配算法?huge_memory、hugetlb:大頁模式的支持(分配)?slob:用于嵌入式的簡(jiǎn)單內(nèi)存分配器?slab_common:slab和slub共用的功能函數(shù)?bootmem:?jiǎn)?dòng)期間的內(nèi)存

5、分配器?memblock:初始化期間物理內(nèi)存塊的管理,是對(duì)bootmem的改進(jìn)替代?mmzone:managementcodesforpgdats,zonesandpageflags?mempool:內(nèi)存池,內(nèi)存資源極度緊張情況下使用,可保證無死鎖、內(nèi)存分配不會(huì)失敗?...2.1源文件分類?物理內(nèi)存管理?內(nèi)存回收與遷移?vmscan:內(nèi)存回收算法?compaction:內(nèi)存碎片整理(調(diào)用migrate)?migrate:MemoryMigrationfunctionality?內(nèi)存交換?swapfile:內(nèi)存頁交換到硬盤空間?swap:對(duì)物理頁換入換出的支持函數(shù)2.1源文件分類?

6、虛擬內(nèi)存管理?頁表(映射)建立與管理?memory:頁表映射管理(MMU)?huge_memory、hugetlb:大頁模式的支持(映射)?rmap:physicaltovirtualreversemappings?mmap:虛擬空間內(nèi)存管理(structmm_struct/structvm_area_struct)?mempolicy:內(nèi)存映射策略?vmalloc:虛擬內(nèi)存分配?bounce:高端內(nèi)存的臨時(shí)映射訪問機(jī)制?highmem:Highmemoryhandlingcommoncodeandvariables?pagewalk:頁表遍歷函數(shù)?pgtable-generic

7、:頁表幫助函數(shù)?mmu_context:任務(wù)的內(nèi)存地址空間切換?init-mm:初始化進(jìn)程的內(nèi)存地址空間2.2主要數(shù)據(jù)結(jié)構(gòu)分析?與物理內(nèi)存管理相關(guān)的數(shù)據(jù)結(jié)構(gòu)?內(nèi)存節(jié)點(diǎn)描述符:structpglist_data?記錄每個(gè)內(nèi)存(CPU)節(jié)點(diǎn)的內(nèi)存情況,例如包含幾個(gè)內(nèi)存區(qū)域(zone),以及node內(nèi)的頁框數(shù)?內(nèi)存區(qū)域描述符:structzone?記錄單個(gè)內(nèi)存節(jié)點(diǎn)內(nèi)部不同用途的內(nèi)存區(qū)域,例如ZONE_DMA、ZONE_NORMAL、ZONE_HIGHMEM?頁描述符:structpag

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。