页面表中的1 Mb部分是什么?

时间:2015-10-02 19:49:56

标签: arm64 mmu

我对ARM MMU的了解很少,并试图了解如何在ARM MMU中组织Page表。

页面表是在系统启动时创建的,可以被认为是线性一维数组,其中每个条目长度为4个字节,但我不明白页面表中1 MB SECTION对应的是什么?

如果我们有三级页面表,我们的第一级页面表(PGD) 包含这个1 MB的部分还是它(1 MB部分)只是第三级页面表(PTE)的一部分?

以下声明也是如此:

页表的开头是0x40200000,每个条目长4个字节,每个条目对应1MB的内存部分。页表中的第一个条目(0x40200000)表示当您尝试访问0x00000000到0x00100000范围内的内存时,第二个条目(表格中的4个字节位于0x40200004)表示内存范围0x00100000到0x00200000等。< / p>

因此,要找到与内存区域0x40200000到0x40200000 + 1MB(这是第402 MB内存)相关联的页面表 - 您需要遍历402个条目的页表列表 - 但每个条目长度为4个字节,因此您需要将此数字计算为4。

1 个答案:

答案 0 :(得分:1)

首先,使用驱动mmu的物理地址在ram中的已知位置有一个表。我更喜欢文档的图表版本而不是表格。

当启用mmu并且处理器访问,获取或数据读取或写入时,提取该虚拟地址的一些位并将其添加到上述mmu表的基址中。 mmu表中内存位置的内容告诉mmu如何处理该访问。有些条目是唯一的访问权限,有些条件需要再次从第一级访问中获取第二个mmu表访问权限,并将这些条目添加到上面的mmu表基地址以获取第二个条目。

在一天结束时,你有一个带有基地址的mmu表(必须在某个边界上对齐)。来自处理器访问的虚拟地址的位用于索引到该表。表中的最终值表示将虚拟转换为物理地址的替换地址位,以及指示可缓存与否的一些控制位,以及权限等。它们将terminlogy应用于1MB或者理想情况下基于表中一个条目控制的ram数量。但当然16MB的功能是误导性的,因为你需要16个1MB的条目才能使用它(但是如果你忽略了16mb的术语并严格查看地址位以及它们来自哪里或者你知道有多少ram被控制每个mmu表项)。

所以他们所说的是某些人在某个时间点创建的表格。表的位置的物理地址是0x40200000。 1MB大小的条目(对于手臂我认为你看看条目的低两位,以确定它是什么类型但我必须看,不同的架构添加不同的功能,所以没有一个规则适合所有,你必须查看你的核心的文档)是4个字节或一个字宽和AFAIK mmu表中的所有条目都是一个字宽。所以他们说一个特定的条目是虚拟地址空间中的1MB ram,从0x00000000到0x000FFFFF,mmu表将它映射到某个物理地址。他们显示的下一个条目可能是1MB虚拟地址空间0x00100000到0x001FFFFF,依此类推。