RMAP反向映射

看了一下关于RMAP的东西,感觉看的云里雾里,现在简单总结下RMAP的作用:

产生背景:

我们知道一个page可以被多个进程的多个虚拟地址映射到,但是如果需要从page找到所有映射这个page的虚拟地址需要同时访问系统当前所有进程的进程空间的VMA,从中去寻找是否有虚拟地址映射到了此页面,对于系统来说,这是一个非常繁重的工作,所以这里需要一种可以从page快速找到所有映射了此页面的VMA,这种情况下RMAP就诞生了。

产生page映射的几种情况:

1.进程缺页中断分配的物理内存并建立映射。

2. 父进程创建子进程,copy父进程的VMAs到子进程,这时候会出现多个子进程的虚拟页面会映射到同一个物理页面。

3. 子进程产生写时复制操作,新建一个page并建立映射。

RMAP的作用就是在以上三种情况下,通过新的数据结构anon_vma以及anon_vma_chain建立子进程与父进程之间的内存映射的联系,从而在需要寻找某个物理页面的映射关系的时候只需要遍历通过以上两个数据结构建立起来的联系的框架里面的VMA就可以找到对应的映射到物理页面的VMA。

下面是截自奔跑吧里面的一幅RMAP映射的关系图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值