如何确定页表中映射了多少虚拟地址空间?

时间:2014-05-11 14:30:58

标签: arm mmu

我已经读过Arm V7 ISA为程序提供4gig的虚拟地址空间。如果我采用一个程序,其中所有代码都在4kilobyte之内,我的问题是在页表中是否映射了整个4gig的空间?我采用简短的描述符格式来构建页表并使用4k粒度,在ram中占用大量空间来保存页表。所以我认为单个进程的整个4GB空间没有映射,只有一部分被映射。它是否正确?如果它是正确的,那么如何确定在表中映射了多少VA?

1 个答案:

答案 0 :(得分:0)

在ARM中,页表有多个级别。据我记忆,第一级有4096个条目 - 每个条目描述一个1MB的部分。

从那里你可以通过给出一个包含256个描述4KB部分的条目的二级页面表的指针,将1MB部分分解成4KB大小(或更大 - 我不记得其他大小)。

必须映射顶级1MB部分 - 无论是否必须将映射到某些决定操作系统。如果不需要某个区域,某些操作系统将只填写页面错误的条目。

您当然不希望将整个内存空间划分为4KB块 - 页表大小将是巨大的。