linux內(nèi)核源碼學習

linux內(nèi)核源碼學習

ID:32866026

大?。?82.48 KB

頁數(shù):24頁

時間:2019-02-16

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

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

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

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

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

4、閱讀?目標?熟悉每個源文件的功能?熟悉主要數(shù)據(jù)結構?詳細分析特定模塊的源碼?方法:?從點切入,追蹤調(diào)用路徑?用調(diào)試手段分析源碼(printk、kgdb、dump_stack)?仔細閱讀注釋,參考源碼解讀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:用于嵌入式的簡單內(nèi)存分配器?slab_common:slab和slub共用的功能函數(shù)?bootmem:啟動期間的內(nèi)存

5、分配器?memblock:初始化期間物理內(nèi)存塊的管理,是對bootmem的改進替代?mmzone:managementcodesforpgdats,zonesandpageflags?mempool:內(nèi)存池,內(nèi)存資源極度緊張情況下使用,可保證無死鎖、內(nèi)存分配不會失敗?...2.1源文件分類?物理內(nèi)存管理?內(nèi)存回收與遷移?vmscan:內(nèi)存回收算法?compaction:內(nèi)存碎片整理(調(diào)用migrate)?migrate:MemoryMigrationfunctionality?內(nèi)存交換?swapfile:內(nèi)存頁交換到硬盤空間?swap:對物理頁換入換出的支持函數(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)存的臨時映射訪問機制?highmem:Highmemoryhandlingcommoncodeandvariables?pagewalk:頁表遍歷函數(shù)?pgtable-generic

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

當前文檔最多預覽五頁,下載文檔查看全文

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

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