对象WMA(虚拟内存区域:)和PTE(页面表项)之间有什么区别?

时间:2013-11-29 19:24:25

标签: c linux memory-management linux-kernel posix

对象WMA(虚拟内存区域:struct vm_area_struct,用于操作内核Linux)和PTE(用于操作MMU的页表条目)之间有什么区别,以及为什么我们需要WMA而不是PTE ?

1 个答案:

答案 0 :(得分:6)

每个进程的虚拟内存地址空间分为虚拟内存区域(VMA),其中一个VMA中的所有内存都是连续的,并共享某些属性,如权限。例如,进程可能有一个VMA用于其代码,一个VMA用于每种类型的数据,一个VMA用于每个不同的内存映射(如果有的话)等。

每个VMA都包含许多页面,其中页面是在主物理内存和后备存储之间移动的单位。

每个页面在页面表中都有一个条目,用于指示页面当前是否在物理内存中(在这种情况下,它指向页面的物理内存地址),或当前在系统的后备存储上“分页”(在这种情况下,它指向页面副本的后备存储地址。

因此每个VMA都有多个PTE。

VMA的功能是使用正确的权限定义虚拟内存的连续区域(连续的虚拟地址,而不是连续的物理地址)。

页面表的功能是管理主物理内存和后备存储之间的分页,并作为系统/硬件(MMU)和OS软件之间的通信点。