对象WMA(虚拟内存区域:struct vm_area_struct
,用于操作内核Linux)和PTE(用于操作MMU的页表条目)之间有什么区别,以及为什么我们需要WMA而不是PTE ?
答案 0 :(得分:6)
每个进程的虚拟内存地址空间分为虚拟内存区域(VMA),其中一个VMA中的所有内存都是连续的,并共享某些属性,如权限。例如,进程可能有一个VMA用于其代码,一个VMA用于每种类型的数据,一个VMA用于每个不同的内存映射(如果有的话)等。
每个VMA都包含许多页面,其中页面是在主物理内存和后备存储之间移动的单位。
每个页面在页面表中都有一个条目,用于指示页面当前是否在物理内存中(在这种情况下,它指向页面的物理内存地址),或当前在系统的后备存储上“分页”(在这种情况下,它指向页面副本的后备存储地址。
因此每个VMA都有多个PTE。
VMA的功能是使用正确的权限定义虚拟内存的连续区域(连续的虚拟地址,而不是连续的物理地址)。
页面表的功能是管理主物理内存和后备存储之间的分页,并作为系统/硬件(MMU)和OS软件之间的通信点。