Ale*_*lex 1 c linux posix memory-management linux-kernel
对象WMA(虚拟内存区域struct vm_area_struct,用于操作内核Linux)和PTE(用于操作MMU的页面表条目)之间的区别是什么,以及为什么我们需要WMA而没有足够的PTE?
每个进程的虚拟内存地址空间被划分为虚拟内存区域(VMA),其中一个VMA中的所有内存都是连续的,并共享某些属性,例如权限.例如,进程可能有一个VMA用于其代码,一个VMA用于每种类型的数据,一个VMA用于每个不同的内存映射(如果有的话)等.
每个VMA由许多页面组成,其中页面是在主物理内存和后备存储之间移动的单元.
每个页面在页面表中都有一个条目,用于指示页面当前是否在物理内存中(在这种情况下,它指向页面的物理内存地址),或当前在系统的后备存储上"分页"(在这种情况下)它指向页面副本的后备存储地址).
因此每个VMA都有多个PTE.
VMA的功能是使用正确的权限定义虚拟内存的连续区域(连续的虚拟地址,而不是连续的物理地址).
页表的功能是管理主物理内存和后备存储之间的分页,并作为系统/硬件(MMU)和OS软件之间的通信点.