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

What is 1 Mb section in Page table?

我对 ARM MMU 的了解很低,正在尝试了解页面 table 在 ARM MMU 中的组织方式。

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

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

还有以下语句的含义:

页面的开始table是0x40200000,每个条目长4字节,每个条目对应一个1MB的内存段。页面中的第一个条目 table (0x40200000) 表示当您尝试访问 0x00000000 到 0x00100000 范围内的内存时发生的情况,第二个条目(4 个字节进入 table 处的 0x40200004)表示内存范围 0x00100000 到 0x00200000 等

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

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

当启用 mmu 并且有来自处理器的访问、读取或数据、读取或写入时,将从该虚拟地址中提取一些位并添加到上述 mmu 的基地址中 table。 mmu table 中内存位置的内容告诉 mmu 如何处理该访问。有些条目是唯一的访问权限,有些条目你必须再次进行第二次 mmu table 访问,从第一级访问中获取一些位并将它们添加到上面的 mmu table 基地址以获得第二个条目.

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

所以他们的意思是,对于某些人在某个时间点创建的 table。 table所在位置的物理地址是0x40200000。 1MB 大小的条目(对于 arm,我认为你可以查看条目的低两位来确定它是什么类型,但我必须查看并且不同的体系结构添加了不同的功能,所以没有一个规则适用于所有人,你必须查看核心文档)是 4 个字节或一个字宽,据我所知,mmu table 中的所有条目都是一个字宽。所以他们说一个特定的条目是虚拟地址 space 从 0x00000000 到 0x000FFFFF 中的 1MB 内存,mmu table 将它映射到某个物理地址。他们向您展示的下一个条目可能是 1MB 虚拟地址 space 0x00100000 到 0x001FFFFF 等等。