首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >页面表中的1 Mb部分是什么?

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

Stack Overflow用户
提问于 2015-10-02 19:49:56
回答 1查看 988关注 0票数 0

我对ARM MMU的理解很低,并且试图理解页面表是如何在ARM MMU中组织的。

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

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

还有以下声明的含义:

页面表的开头是0x40200000,每个条目有4个字节长,每个条目对应1MB内存部分。页表中的第一个条目(0x40200000)表示当您试图在0x00000000到0x00100000之间访问内存时会发生什么,第二个条目(在0x40200004处进入表的4个字节)表示内存范围0x00100000到0x00200000,等等。

因此,要找到与内存区域0x40200000相关联的页表到0x40200000+1MB (这是402 MB内存)--您需要通过402个条目遍历页面表列表--但是每个条目都有4个字节长,因此您需要将这个数字按4进行计时。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-02 20:05:02

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

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

在一天结束时,您将得到这个具有基地址的mmu表(必须在某些边界上对齐)。来自处理器访问的虚拟地址的位用于索引到该表中。表中的最后一个值表示要将虚拟地址转换为物理地址的替换地址位,再加上一些表示可寻址的控制位,以及权限等。它们将终端应用于1MB之类的项,或者其他的东西,最好是基于表中一个条目控制的内存数量。但是,当然,16 1MB特性具有误导性,因为您需要16 1MB条目才能使用它(但是如果忽略16 1MB术语,严格查看地址位及其来源或去处,您就知道每个mmu表条目控制了多少ram )。

所以他们的意思是,对于某个人在某个时间点创建的某个表。表位置的物理地址是0x40200000。1MB大小的条目(对于arm,我认为您看条目的下面两位来确定它的类型),但是我需要查看,不同的体系结构添加了不同的特性,所以没有一个规则适合所有人,您必须查看内核的文档)是4字节或1字宽,而AFAIK -- mmu表中的所有条目都是一个字宽。所以他们说,一个特定的条目是在0x00000000到0x000FFFF之间的虚拟地址空间中的1MB内存,而mmu表将它映射到一些物理地址。它们显示的下一个条目可能是1MB虚拟地址空间0x00100000到0x001FFFF,等等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32914782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档