【Linux系统编程】对mmap的理解

之前第一遍学习mmap的时候很多人都说它有很多优点,也翻了一些大佬的博客,发现并不是很能理解,最近钻研了虚拟内存的知识之后豁然开朗,让我对mmap有了新的认识,在这里简单的总结一下。
建议如果大家对一些概念性的东西不是很理解的话可以先看一看《深入理解计算机系统》的第九章,之后你可能会跟我一样豁然开朗哈哈哈。

Linux进程虚拟内存

在这里插入图片描述
学过linux应该对这个图非常了解,从这个图中可以看出Linux把虚拟内存组织成一些段的集合,一个段就是已经分配的虚拟内存的连续片。
内核为每个进程维护了一个任务结构(task_struct),内核用这个结构体来描述一个进程,这个结构包含了进程的一些信息,包括进程id,可执行文件名,指向用户栈的指针以及上下文的task结构体的指针等等,不过其中我们最关心的还是其中指向mm_struct结构体的条目,这个结构体描述了当前进程的状态,而这个mm_struct结构体中有两个比较重要的条目,一个是pgd,他指向一级页表的基址,便于根据虚拟地址查询页表,另一个是mmap,他指向一个vm_area_struct的链式结构,这个链式结构用来描述一个段,其中包括一个段的起止虚拟地址,标志访问权限的权限位,标志是否是共享区的标志位。这些标志的意义就是CPU要操作一块数据时,内核会先遍历这个vm_area_struct链表(为了便于搜索,其实他既是一个链表,还是一个树),如果查不到属于某一块&#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值