mmap学习

1

在这里插入图片描述
mm_struct 结构体
描述了 text数据段(代码段)、初始数据段、BSS数据段、堆、栈和内存映射 等

struct mm_struct {
	struct vm_area_struct * mmap;		/* list of VMAs */  用来描述内存映射
	struct rb_root mm_rb;
	struct vm_area_struct * mmap_cache;	/* last find_vma result */
	unsigned long (*get_unmapped_area) (struct file *filp,

使用 struct vm_area_struct * mmap 表示不同类型的虚拟内存区域

2

mmap 的作用
a 将文件内容映射到进程用户态的虚拟地址空间中
b 分配内存
mmap基本原理
a 普通文件的mmap基本原理
b 特殊文件
c 匿名映射的基本原理
参考:mmap原理及流程(kernel 4.1版本)

3 用户调用mmap流程

1 在进程的虚拟空间查找一块 VMA
2 将这个块 VMA 进行映射
3 如果设备驱动程序或者文件系统的 file_operations 定义了 mmap() 操作,则调用它。
4 将这个VMA 插入进程的 VMA链表中

file_operations 中 mmap 函数的第一个参数就是 步骤 1)找到的 VMA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值