gpt4 book ai didi

c - 对象WMA(虚拟内存区域:) and PTE (Page Table Entry)?)之间有什么区别

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:50 26 4
gpt4 key购买 nike

对象 WMA(虚拟内存区域:struct vm_area_struct,用于运行内核 Linux)和 PTE(页表条目,用于运行 MMU)之间有什么区别,为什么我们需要 WMA 而没有足够的 PTE?

最佳答案

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

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

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

所以每个 VMA 都有多个 PTE。

VMA的作用是定义一个具有正确权限的连续虚拟内存区域(连续虚拟地址,而不是连续物理地址)。

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

关于c - 对象WMA(虚拟内存区域:) and PTE (Page Table Entry)?)之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20292256/

26 4 0