MMU即Memory Management Unit(内存管理单元)的缩写,百度搜索“MMU”您将看到对MMU的较为准确和全面的描述。那么我们的程序在多任务环境下加载运行时,MMU起到什么作用作用呢?如何理解每个程序都运行在独立的空间呢?这就是本文要解决的问题。
我们知道,MMU的主要工作就是将程序的虚拟地址(编译器和链接器计算的)转换成内存的物理地址(硬件电路决定的)。
另外我们还要知道,任意两个程序,虚拟地址都是重复的,更何况我们运行两次同一个程序的情况(我们知道,程序只是存储器中的数据而已,加载运行后我们称之为“进程”,同一个程序可以多次运行形成多个进程。另外,一个程序运行起来不一定只有一个进程)。
那么,如何区分这样重复的虚拟地址呢?见后文。
同样的虚拟地址,映射成不同的物理地址,我们将这个映射关系组织成一种数据结构,存放在MMU的重定位寄存器中,重定位寄存器(寄存器成本高啊)较少,无法存储那么多(我们运行的程序多啊,而且每个程序都有很多的段)映射关系的数据。没关系,我们在这些寄存器中安排一个(通常是最后一个)寄存器存放存储在内存中某个位置的一个页表中,这个页表的每个子页表存储了映射关系数据。内存比寄存器大多了吧,足够用了。
以下两段摘自:http://www.360doc.com/content/10/0209/11/829246_15515058.shtml
构建多任务的一种方法是创建一组独立的页表,每个映射到唯一的任务空间。为了激活某个人任务,对应这个任务的那组页表和其虚拟内存空间由MMU使用,没有激活的页表代表睡眠的任务。这种方法使所有任务都驻留在内存中,当发生上下文切换时可以立即使用。
在上下文切换时通过激活不同的页表,使得在重叠的虚拟地址执行多任务成为可能。MMU可以通过重定位任务地址而不需要移动在内存中的任务。任务的物理内存只是简单的通过激活与不激活页表来实现映射到虚拟内存。
分享到:
相关推荐
根据OK6410开发板写的mmu初始化程序,经本人验证可以运行。
本文介绍了MMU的概念及相关原理,并引出了MMU与CACHE的区别和对比,深入剖析了二者的不同点。适合那些对MMU于CACHE不太了解的同学
详细的介绍了ARM中的MMU及CACHE的原理与使用方法,仔细阅读可以完全弄懂MMU与CACHE
ARM9 MMU与CACHE PPT 演示
MMU与MCU的详细介绍,参照SH7764芯片
将韦东山老师MMU那一节的内容移植到了MINI2440上面运行,正常运行时,可以看到四个LED灯在循环闪烁。
ARM芯片 mmu 详细资料
A9的MMU页表是由linux管理和创建的,ARM11运行的是rtthreaed,MMU页表是在系统启动前预先创建好的。ARM11属于ARMv6架构,其MMU需要两级页表来映射物理地址,第一级页表为段映射,一个页表条目表示1M空间;第二级页表...
wince MMU实现原理,wince MMU实现原理,wince MMU实现原理,
xtensa mmu stuff for Embedded Linux.
MMU与PTS,可以帮助你理解学习MMU的初始化和使用方法
实现了对ARM920T中MMU的启用 地址转换过程 1. 从CP15寄存器C2得到一级页表的基地址 2. 将虚拟地址[31:20]作为页表的索引,得到页表中该虚拟地址的描述符。 3. 判断该描述符是否为段描述符,如为段描述符,将该描述...
ARM关于mmu的点亮程序!空板运作的!
MMU的详细资料和DATA,还是不错的哦!
MIPS的MMU工作原理,包括MIPS各个地址空间段的介绍,自己总结的资料,希望对大家有帮助
ARM与MMU原理 ARM与MMU原理 ARM与MMU原理
ARM中MMU工作原理 ARM中MMU工作原理 ARM中MMU工作原理