ARMMMUL1L2页表计算说明剖析

ARM的存储管理单元MMU知识点介绍................................................................................................................................................................................................1ARMMMU页表设置计算.......................................................................................................................................................................................................................9ARM的存储管理单元MMU知识点介绍知识点。MMU知识体系比较庞大,只总结必须知道了解的MMU由于ARM的内存管理单元的作用(一)MMU1)虚拟存储空间到物理存储空间的映射(2)存储器访问权限控制()设置虚拟存储空间的缓冲特性(3的地址变换的内存块单元(二)MMU1M的内存块单元为单位进行的虚拟地址物理地址之间的变换。(1)段单元:按大小为页47共页1第(2)大页单元:按大小为64K的内存块单元为单位进行的虚拟地址物理地址之间的变换。(3)小页单元:按大小为4K的内存块单元为单位进行的虚拟地址物理地址之间的变换。(4)极小页单元:按大小为1K的内存块单元为单位进行的虚拟地址物理地址之间的变换。Linux在最初的汇编代码中使用段单元的映射机制来实现MMU的开启。当Linux系统启动之后采用的是小页单元的映射机制,因为我们知道Linux把物理内存和虚拟内存的管理是按页来管理的,每个页大小为4k字节。(三)MMU的地址变换方式(1)一级页表地址映射页47共页2第查找的过程就是找到页表基地址和当前需要转化的虚拟地址大小的内存块单元进行的地址映射,1M一级页表地址段映射,是指按,从上图中可看出位X4+位为索引的页目录项,由于每个目录项都是4字节对齐的,所以应该为:页表基地址虚拟地址高1212的高页47共页3第一级描述符的地址总是4字节对齐的,即后两位为0.一级描述符地址中存放的是一级描述符,一级描述符的格式定义如下:映射实例:题目:把内存的地址从0x100000-0x200000空间映射成虚拟地址0xc0100000-0xc0200000的地址空间.(第一步)根据图1的介绍,我们先把内存虚拟地址右移20位:Tableindex=(0xc0100000>>20)=0xc01---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---(第二步)我们打算用内存地址0x4000-0x8000的内存空间内作为存放页表的内存地址。所以把0x4000写到CP15:C2寄存器。注意0x4000正好是16k对齐。所以这里的一级描述符地址为:一级描述符地址:(0x4000+(0xc01<<2))=0x4000+0x3004=0x7004(第三步)我们根据需要把该虚拟地址映射到实际的物理地址的需求,来构建一级页表描述符:页47共页4第根据图2,我们为了取得被映射的物理地址基地址,需要将物理地址右移20位:Sectionbaseaddress=(0x100000>>20)=0x1AP,Domain,C,B属性在实例中不做设置。所以最终的一级页表描述符为:`1cb10'=0b10010=0x12一级页表描述符=(0x1<<20)+0x12=0x100000+0x12=0x100012然后把这个0x100012(一级页表描述符)写到一级描述符地址0x7004指向的内存中去。这样当我们需要访问虚拟内存地址0xc0100000的时候,CPU需要做的事情就是读取C2寄存器,找到页表基地址0x4000,然后根据0xc0100000>>20的index索引找到一级描述符基地址(0x4000+(0xc01<<2)),然后读取这个地址里面的一级描述符:0x100012,得到段映射的物理基地址0x100012>>20,然后再与虚拟地址的低20位相加,得到对应的物理地址0x100000.页47共页5第(2)二级页表地址映射页47共页6第二级页表的映射查找过程其实就是,找到页表基地址,然后找到一级描述符,然后通过一级描述符找到二级页表的基地址,然后再找到二级页表的描述符,通过二级页表描述符来找到对应的物理地址基地址。二级描述符结构:二级描述符的说明可以参考一级描述符的描述。页47共页7第(3)一级,二级页表地址映射的过程图:目录项和页面表都是存放在内存中的表。虚拟地址和物理地址的转化就是查找这些表的过程。页47共页8第---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---ARMMMU页表设置计算内存管理单...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?