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