赞
踩
承接《linux内核那些事之mmap》,mmap_region()是申请一个用户进程虚拟空间 并根据匿名映射或者文件映射做出相应动作,是实现mmap关键函数,趁这几天有空闲时间 整理下mmap_region主要流程:
该函数主要分为以下几块,该函数看似比较复杂,将其抽象成几块就比较简单:
1: 首先是对参数 以及当前进程使用的虚拟内存状况进行各种检查
2:是否可以addr最近的一个vma 可以合并vma_merge,如果可以则可以和之前vma合并,如果不可以合并,则申请一个新的vma,用于管理
3:针对文件映射,私有匿名映射和share 匿名映射设置vm_ops
4: 更新mm中虚拟内存相关统计信息,如果vma被lock,则还需要更新统计mm内被lock的虚拟内存信息。
5:其他是各种异常返回
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。