6.艰难学习Linux系统之内存管理MMU

在以前使用单片机过程中,没有涉及过MMU,所以知道是内存管理,但是还是不知道这个东东到底有什么作用。接下来一起来学习吧。

它负责虚拟地址到硬件地址的映射,并提供硬件机制的内存访问权限检查。现在多用户进程的操作系统通过MMU 使得各个用户进程都拥有自己独立的地址空间:而内存访问权限检查可以保护每个进程所用的内存不会被其他进程破坏。

MMU主要解决的问题:(1)就是程序大的时候,所要求的内存空间超过内存总量。(2)带操作系统中许多程序需要同时执行,要求的内存空间超过内存总容量。

意思也就是说:鱼,跟熊掌我都想要,反正我不管,你想办法去吧。那我就整个障眼法来达到最终目的,只要最后达到目的就行了。

1.没启动MMU时,用的都是物理地址(实实在在的)

2.启动MMU后,CPU发出虚拟地址—》变化后的虚拟地址-》物理地址(变通了一下)

虽然我们不用理会是怎么转换的,但是现在理解这个过程还是有好处的。分析一下吧。

(1)虚拟地址—》变换的虚拟地址。

之所以加了个变换的虚拟地址是为了方便进程切换,反正就是为了省事,知道就得了。


(2)虚拟地址到物理地址一般用特定的数学公式转换或者用表格存储虚拟地址对应物理地址。

注:表格转换过程

 

3.MMU另一大组成部分,内存访问检查。

就是决定一块内存是否允许读,写。由CP15寄存器C3,描述符的域(对哪一块),CP15寄存器C1的R/S/A位,AP位(如何检查)联合作用。

 

4.TLB

提高 利用表格确定物理地址方法的效率。

5.Cache

提高运行速度

 

实例流程:用虚拟地址点亮LED

关闭看门狗 设置堆栈指针 初始化SDRAM 复制代码到 SDRAM 设置页表

启动MMU  重设堆栈指针  跳到SDRAM   执行主函数

 

要想完成映射(1)建表格(建立虚拟地址映射物理地址)(2)表格地址告诉MMU(把内存首地址告诉MMU)(3)启动MMU

 

学完了一遍,意思大概明白了,但是感觉映射这用程序实现起来感觉并不容易,其实这个东西并不难,只是现在对ARM的存储架构不够清晰,再加上对汇编指令应用不够熟练,所以觉得难。、再仔细看看启动文件调用过程吧。。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值