Linux mm_struct基础

来源:互联网 发布:python运行程序 编辑:程序博客网 时间:2024/05/17 06:45

每一个任务都有一个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
原创粉丝点击