
1 架構(gòu)mm_struct 結(jié)構(gòu)體描述了 text數(shù)據(jù)段代碼段、初始數(shù)據(jù)段、BSS數(shù)據(jù)段、堆、棧和內(nèi)存映射 等structmm_struct{structvm_area_struct*mmap;/* list of VMAs */用來描述內(nèi)存映射structrb_rootmm_rb;structvm_area_struct*mmap_cache;/* last find_vma result */unsignedlong(*get_unmapped_area)(structfile*filp,使用 struct vm_area_struct * mmap 表示不同類型的虛擬內(nèi)存區(qū)域2 原理mmap 的作用a 將文件內(nèi)容映射到進(jìn)程用戶態(tài)的虛擬地址空間中b 分配內(nèi)存mmap基本原理a 普通文件的mmap基本原理b 特殊文件c 匿名映射的基本原理參考mmap原理及流程(kernel 4.1版本)3 用戶調(diào)用mmap流程1 在進(jìn)程的虛擬空間查找一塊 VMA2 將這個塊 VMA 進(jìn)行映射3 如果設(shè)備驅(qū)動程序或者文件系統(tǒng)的 file_operations 定義了 mmap() 操作則調(diào)用它。4 將這個VMA 插入進(jìn)程的 VMA鏈表中file_operations 中 mmap 函數(shù)的第一個參數(shù)就是 步驟 1找到的 VMA