我对ARM MMU的了解很低,试图了解ARM MMU中的Page表是如何组织的。
页表是在系统启动时创建的,可以将其视为线性一维数组,其中每个条目的长度为4个字节,但我不知道页表中对应的1 MB SECTION是什么?
如果我们有三级页表,我们的第一级页表(PGD)会包含此1 MB的部分,还是第一级页表(1 MB的部分)是第三级页表(PTE)的一部分?
以下语句也意味着什么:
页表的开头是0x40200000,每个条目的长度为4个字节,每个条目对应于1MB的内存部分。页表中的第一个条目(0x40200000)表示您尝试访问0x00000000到0x00100000范围之间的内存时发生的情况,第二个条目(表中0x40200004的4个字节)表示内存范围0x00100000到0x00200000,依此类推。
因此,要查找与内存区域0x40200000至0x40200000 + 1MB(这是内存的第402 MB)关联的页表,您需要将页表列表遍历402个条目,但是每个条目的长度为4个字节,因此需要时间这个数字乘以4。
首先,在ram的已知位置有一张表,使用驱动mmu的物理地址。我更喜欢文档的图表版本而不是表格。
启用mmu并从处理器进行访问,访存或数据访问,读取或写入时,将从该虚拟地址中提取的一些位数提取并添加到上述mmu表的基址中。mmu表中存储位置的内容告诉mmu该访问如何处理。有些条目是唯一的访问权限,有些则需要再次进行第二个mmu表访问,这需要从第一级访问中获取一些位,并将这些位添加到上述mmu表基地址中以获得第二个条目。
在一天结束时,您将拥有一个带有基本地址的mmu表(该地址必须在某个边界上对齐)。来自处理器访问的虚拟地址中的位用于索引该表。表中的最终值表示将虚拟地址转换为物理地址的替换地址位,以及表示是否可缓存的某些控制位以及权限等。他们将术语应用于诸如1MB之类的术语,或者理想情况下基于表中一项控制的ram数量。但是,当然16MB功能会误导您,因为您需要16个1MB条目才能使用它(但是如果您忽略16mb术语并严格查看地址位以及它们来自何处或从何处知道,您可以控制多少内存通过每个mmu表条目)。
所以他们说的是对于某人在某个时间点创建的某个表。表位置的物理地址为0x40200000。1MB大小的条目(对于我来说,我认为您应该查看条目的低两位以了解它是什么类型,但是我必须查看一下,并且不同的体系结构添加了不同的功能,因此没有一条适合所有人的规则,您必须查看核心文档)4个字节或1个字宽,并且AFAIK mmu表中的所有条目均为1个字宽。因此,他们说一个特定的条目是从0x00000000到0x000FFFFF的虚拟地址空间中1MB的ram的地址,而mmu表将其映射到某个物理地址。他们显示的下一个条目可能是1MB虚拟地址空间0x00100000到0x001FFFFF,依此类推。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句