【linux3.10】内存反向映射中的anon_vma是per process的吗?

前言

在学习虚拟内存的反向映射部分时,遇到了struct anon_vma这个结构,在网上看了很多篇帖子,都说是per process的,但是自己阅读代码过程发现逻辑似乎并不是这样,一时就很奇怪,是帖子描述的有问题,还是我没有理解透彻?实践出真知,与其在代码上纠结半天,不如根据看代码运行结果,让我们进入内核这个黑箱子,来看看它究竟如何运作

工具准备

我使用的是bcc这个工具,使用起来非常简单,在centos下只要yum install bcc-tools -y,再加上可以使用python,就可以使用bcc这个强大的工具了,关于bcc的语法,可以参阅

bpf程序

一个简单的小程序,我选择的是__anon_vma_prepare这个函数,因为这个函数是page fault中选择分配新的anon_vma还是使用一个旧的主要逻辑。
在这里插入图片描述

验证

只要把一个进程内的vma->anon_vma的地址都打印出来,让我们看看它的表现
输入ls,内核会起一个新的进程,这时就可以观测这个进程的vma
结果如下:
在这里插入图片描述
在这里插入图片描述

看着有点奇怪,新起的ls进程确实打印出了很多个不同的anon_vma地址,但守

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值