Linux mm_struct基础

每一个任务都有一个mm_struct,他应该表示出一个task和内存相关的所有的信息;

1.每一个任务都有几个vm区域,例如:text,data,bss,brk,stack,open file,anon file,这些区域需要有的元素:虚拟地址空间,他们是通过一个tree来管理的;以及还有保存了这些段的信息(开始地址,结束地址等)

2.每个用户空间的task因为和物理地址不是简单的线性对应关系,所以需要一个中介去根据虚拟地址寻找物理地址,就是页表

3.task是由一个可执行文件装载进入后创建的,所以需要保存可执行文件的信息;

4.还需要进行一些内存相关统计的信息,例如物理内存占用多少,虚拟地址空间占用多少

5.对上述内存资源的管理,物理内存是由伙伴系统和slab等管理的,那么还有另外一个要素:虚拟地址空间的管理(增删改查)

每一个vm区域也有不同情形,当一个虚拟地址存在时,它可能的情况:1.物理内存(页表来转换)2.映射的文件(address space来管理)3.匿名文件(就是没有后备存储器动态创建的文件例如堆,栈,通过页表来管理)4.非线性映射(目前没有研究)5.物理地址可能被swap了(交换缓冲区来管理)6.还没有分配物理地址


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值