S3C2440--MMU

来源:互联网 发布:免费cc顶级域名2016 编辑:程序博客网 时间:2024/06/06 15:35

1.MMU的作用

我们再第一部分讨论的全部都是物理地址,注意不要与这部分要将的虚拟地址给混淆起来。

内存管理单元(Memory ManagerUnit)简称MMU。它负责将虚拟地址转换成物理地址,然后传给上部分介绍的存储管理器进行寻址。

现代的多用户多进程操作系统通过MMU使各个用户进程都有自己的独立的地址空间:地址映射功能功能使的个进程拥有“看起来”一样的地址空间,而内存访问权限的检查可以保护每个进程所用的内存不会被其他进程破坏。

我来打个蹩脚的例子。甲同学(进程甲)去一个图书管理员那儿去借名为“内存”的一本书,说他7点钟要用。图书管理员给甲同学一个牌子上面写着哪个层楼房哪个房间有这本书,不过这块牌子只能7点钟去取书,且只能借三个小时(权限),而乙同学同样要借这本书不过是12点,图书馆同样给乙同学一块牌子,不同的时这块牌子只能12点钟去取书也只能借三个小时。结果是甲乙同学都借到了这本书,他们都感觉拥有了这本书,在他们拥有这本书的期间不会被其他同学打扰。实际上这里的同学就代表进程,图书管理员代表是内核,牌子代表的是虚拟地址,书代表实际的内存,而MMU完成的工作就是拿到同学的牌子帮同学找到书的过程。

虚拟地址最终要转成物理地址才能读写实际的数据,这通过将虚拟地址空间、物理地址空间划分为一个同样大小的一块块小空间,然后为着两类小空间建立映射空间,有可能多块虚拟地址映射到同一块物理地址空间,或者有些虚拟地址空间映射具体物理地址空间上去。启动MMU后,CPU对外发出虚拟地址,然后MMU将虚拟地址转成物理地址再进行访问。

2.虚拟地址空间到物理空间的转换过程

在ARM CPU中使用页表的方式进行转换。linux内核一般使用两级页表的方式。页表是个什么东东,他就像我们的书上的目录,有主目录,次目录。当我们要找一个知识点的时候先找到主目录,然后再找到次目录再找到相应的知识点。每一个进程都会在内存里面创建一个目录,目录的存放地址保存起来。当需要访问目录时,就会将目录放到CPU的一个专用寄存器里面,然后MMU读取这个寄存器里面的值就会帮我们找到我们要访问的物理地址。

         页表是怎样建立的呢?

         实际上它就是在内存的一个地址内存放了第一级目录的内存地址,然后在第一个级的目录的内存内又存放了实际的物理地址。

0 0
原创粉丝点击