ARMMMUL1L2页表计算说明分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM的存储管理单元MMU知识点介绍 1 ARM MMU 页表设置计算 9 ARM的存储管理单元MMU知识点介绍 由于ARM的MMU知识体系比较庞大,只总结必须知道了解的MMU知识点(一)MMU内存管理单元的作用 (1)虚拟存储空间到物理存储空间的映射 (2)存储器访问权限控制 (3)设置虚拟存储空间的缓冲特性 (二)MMU的地址变换的内存块单元 (1)段单元:按大小为1M的内存块单元为单位进行的虚拟地址物理地址之间的变换。 (2)大页单元:按大小为64K的内存块单元为单位进行的虚拟地址物理地址之间的变换。 (3)小页单元:按大小为4K的内存块单元为单位进行的虚拟地址物理地址之间的变换。 (4)极小页单元:按大小为1K的内存块单元为单位进行的虚拟地址物理地址之间的变换。 Linux在最初的汇编代码中使用段单元的映射机制来实现MMU的开启。当Linux系统启动之后采用的是小页单元的映射机制,因为我们知道Linux把物理内存和虚拟内存的管理是按页来管理的,每个页大小为4k字节。 (三)MMU的地址变换方式 (1)一级页表地址映射 一级页表地址段映射,是指按1M大小的内存块单元进行的地址映射,查找的过程就是找到页表基地址和当前需要转化的虚拟地址的高12位为索引的页目录项,由于每个目录项都是4字节对齐的,所以应该为:页表基地址+虚拟地址高12位X 4,从上图中可看出一级描述符的地址总是4字节对齐的,即后两位为0.一级描述符地址中存放的是一级描述符,一级描述符的格式定义如下: 映射实例: 题目:把内存的地址从0x100000-0x200000空间映射成虚拟地址0xc0100000-0xc0200000的地址空间. (第一步)根据图1的介绍,我们先把内存虚拟地址右移20位: Table index = (0xc0100000 20) = 0xc01 (第二步)我们打算用内存地址0x4000-0x8000的内存空间内作为存放页表的内存地址。 所以把0x4000写到C2寄存器。注意0x4000正好是16k对齐。所以这里的一级描述符地址为: 一级描述符地址:(0x4000 + (0xc01 2))(第三步)我们根据需要把该虚拟地址映射到实际的物理地址的需求,来构建一级页表描述符: 根据图2,我们为了取得被映射的物理地址基地址,需要将物理地址右20位: Sectionbase address = (0x100000 20) = 0x1 AP,Domain, C,B属性在实例中不做设置。所以最终的一级页表描述符为:`’=0b10010=0x12 一级页表描述符 = (0x1 20) + 0x12 =0x100000 + 0x12 = 0x100012 然后把这个0x100012写到一级描述符地址指向的内存中去。 这样当我们需要访问虚拟内存地址0xc0100000的时候,CPU需要做的事情就是读取C2寄存器,找到页表基地址0x4000,然后根据0xc0100000 20的index索引找到一级描述符基地址(0x4000 + (0xc01 2)),然后读取这个地址里面的一级描述符:0x100012,得到段映射的物理基地址0x100012 20,然后再与虚拟地址的低20位相加,得到对应的物理地址0x100000. (2)二级页表地址映射 二级页表的映射查找过程其实就是,找到页表基地址,然后找到一级描述符,然后通过一级描述符找到二级页表的基地址,然后再找到二级页表的描述符,通过二级页表描述符来找到对应的物理地址基地址。 二级描述符结构: 二级描述符的说明可以参考一级描述符的描述。 (3)一级,二级页表地址映射的过程图: 目录项和页面表都是存放在内存中的表。虚拟地址和物理地址的转化就是查找这些表的过程。MMU 页表设置计算 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进程所用的内存不被其他进程破坏。 重点就在于地址映射:页表的结构与建立、映射的过程。 ? 1、S3C2410/S3C2440 MMU地址变换过程? 1)地址的分类 一个程序在运行之前,没有必要全部装入内存,仅需要将那些要运行的部分先装入内存,其余部分在用到时从磁盘载入,当内存不足时,再将暂时不用的部分调出到磁盘。 这使得大程序可以在较小的内存空间中运行,也使得内存中可以同时装入更多的程序并发执行,这样的存储器一般称为虚拟存储器。 虚拟地址最终需要转换为物理地址才能读写实际的数据,通过将虚拟地址空间和物理空间划分为同样大小的空间(段或页),然后两个空间建立映射关系。 由于虚拟地址空间远大于物理地址,可能多块虚拟地址空间映射到同一块物理地址空间,或者

文档评论(0)

x5511167 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档