1. 程式人生 > >linux記憶體管理各檔案簡介

linux記憶體管理各檔案簡介

1、記憶體分配機制

page_alloc:夥伴分配系統

debug-pagealloc:夥伴分配系統輔助函式

slabslubslob:基於夥伴系統之上的記憶體分配演算法

huge_memoryhugetlb:巨頁模式的支援(分配和對映)

slob:用於嵌入式的簡單記憶體分配器

slab_commonslabslub共用的功能函式

bootmem:啟動期間的記憶體分配器

nobootmem A boot-time physical memory allocator and configurator

memblock:初始化期間實體記憶體塊的管理,是對bootmem的改進替代

mmzone

management codes for pgdats, zones and page flags

mempool:記憶體池,記憶體資源極度緊張情況下使用,可保證無死鎖、記憶體分配不會失敗

percpu-km percpupercpu memory allocator

sparse:實體記憶體組織形式之一Sparse Memory,其他還有Discontiguous MemoryFlat Memory

page_isolation:記憶體頁隔離

mlock:系統呼叫,鎖定實體記憶體

mprotect:系統呼叫,設定記憶體訪問許可權

dmapool:符合DMA操作的記憶體池管理(建立、刪除等操作)

2、記憶體資源管理

memcontrol:基於CGROUP的記憶體資源分配管理

page_cgroup:配合memcontrol實現記憶體CGROUP機制

hugetlb_cgroup:配合memcontrol實現記憶體CGROUP機制

vmpressure:配合memcontrol實現記憶體CGROUP機制


3、虛擬記憶體管理(分配釋放)

memory:頁表對映管理(MMU

huge_memory、hugetlb:巨頁模式的支援(分配和對映)

rmap:physical to virtual reverse mappings

interval_tree:虛擬記憶體塊操作(線段樹)

mmap:虛擬空間記憶體管理(

struct mm_struct / struct vm_area_struct)

mempolicy:記憶體對映策略

vmalloc:虛擬記憶體分配

vmstat:記憶體統計計數管理

nommu:對於沒有mmu的支援

bounce:高階記憶體的臨時對映訪問機制

highmem:High memory handling common code and variables

pagewalk:頁表遍歷函式

pgtable-generic:頁表幫助函式

mm_init:Memory initialisation verification and debugging

mmu_context:任務的記憶體地址空間切換

init-mm:初始化程序的記憶體地址空間

maccessAccess kernel memory without faulting函式

mremap:系統呼叫,擴大或者縮小記憶體對映地址空間,可能會同時移動對映地址

process_vm_access:系統呼叫,從特定程序中讀取其記憶體內容,這允許特權程序訪問另外一個程式的地址空間。

percpu-vm:Chunks are mapped into vmalloc areas and populated page by page. This is the default chunk allocator. 

mmu_notifier:由於Remote DMA (RDMA) engines、KVM虛擬機器以及顯示卡都有自己的單獨的記憶體管理系統,所以mmu_notifier專門用來通知這些模組主機記憶體頁的變化。

mincore:系統呼叫,查詢記憶體地址空間內的頁是否被交換到硬碟

sparse-vmemmap:SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise pfn_to_page and page_to_pfn 

operations. This is the most efficient option when sufficient kernel resources are available

4、記憶體回收機制

vmscan:記憶體回收演算法

compaction:記憶體碎片整理(呼叫migrate

migrateMemory Migration functionality

5、記憶體交換機制

swapfile:記憶體頁交換到硬碟空間

swap:對物理頁換入換出的支援函式

swap_state:與頁快取記憶體交換有關

frontswapFrontswap允許Linuxswap子系統使用 transcendent memory,當有可用的記憶體的時候,會取代往一個swap裝置傳送資料或從一個swap裝置獲得資料。Frontswap本身並不是一個swap裝置, 也因此它並不要求像swap裝置那種的配置。

6、頁快取記憶體以及回寫機制

filemap:固態儲存裝置檔案對映到記憶體空間

ksmKernel Samepage Merging

page-writeback:記憶體頁回寫硬體裝置管理

truncate:對頁快取記憶體的截斷處理

backing-dev:頁快取記憶體對應的底層裝置特性抽象

readahead:檔案預讀到頁高速緩衝中

page_io:頁快取記憶體的I/O操作API介面

fremap:檔案的重對映

fadvise:系統呼叫,建議核心未來以何種方式訪問檔案

msync:系統呼叫,把頁快取記憶體內容同步到磁碟

madvise:系統呼叫,應用程式建議核心如何進行頁快取記憶體的I/O操作

cleancache:允許 tmem 儲存少數 rerault 時產生的清潔頁快取頁面。

filemap_xip:當核心在flash中執行時的檔案對映機制


7、異常管理機制

memory_hotplug:記憶體熱插拔支援

memory-failure:記憶體硬體錯誤的處理機制(比如多位元ECC錯誤或者快取錯誤)

oom_kill:記憶體耗盡的處理機制

kmemleak:記憶體洩漏檢測機制

hwpoison-inject:在物理頁幀注入硬體故障

kmemleak-test:記憶體洩漏測試模組

KmemcheckLinux 核心記憶體檢測工具

failslabslab分配器故障注入

8、其他

shmem:基於記憶體的tmpfs檔案系統實現

quicklist

balloon_compaction

util:通用函式