虚拟地址空间的管家--vma
单个vma的内容
vm_area_struct
+--------------------------------+
|vm_start, vm_end | the range we cover
| (unsigned long) |
| |
|vm_file |
| (struct file*) |
|vm_pgoff | offset in PAGE_SIZE
| (unsigned long) |
+--------------------------------+
|vm_flags | VM_READ/WRITE/EXEC
| (unsigned long) |
|vm_page_prot | access PTE permission of this VMA calculated from vm_flags
| (pgprot_t) | _PAGE_PRESENT/RW/ACCESSED/DIRTY
| |
+--------------------------------+
|vm_ops |
| (struct vm_operations_struct*)|
+--------------------------------+相关的系统调用
mmap
munmap
mremap
mprotect
常用的API
分配/释放
查找
新建
合并/拆分
vma_merge_existing_range()
vma_merge_new_range()
__split_vma()
扩张/收缩
修改
移动
迭代器
vma_find(vmi, max)
vma_next(vmi)
vma_prev(vmi)
vma_iter_next_range(vmi)
vma_iter_next_rewind(vmi, **prev)
锁机制
内核文档
图解
读锁的流程
写锁的流程
vma对物理地址的影响
进程地址空间布局
功能测试
性能测试
如何运行测试
测试框架解析
图示化结果

Last updated