MMU是什么?
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是SOC内部的一个硬件模块
MMU有什么作用?
MMU的作用是把虚拟地址转换为物理地址,之前篇章咱们捋过,CPU依照PC寄存器的指示不断地取指、译码、执行。我们可以使用objdump -d a.out命令读取下ELF文件的内容
一个ELF可执行文件里边存的是一条条机器指令,每条指令有一个地址位置,PC寄存器的值就是某个指令的位置值,当依据PC寄存器值去取指令时,这个值是个虚拟的值,它不是真实物理内存的地址值,这个需要虚拟值需要经过MMU硬件模块的转换,转换成真实值,也就是常说内存条中的位置,进过MMU转换才能把真实物理内存的地址内保存的指令返送给CPU。MMU转换的依据是什么?就是页表,跟进页表查询到虚拟地址对应的物理地址。
加上刚才得到的物理地址基址,最后算得的这个物理地址值就是对应的虚拟地址,这就是MMU转换的简略过程。不同程序的一级页表的基址是不一样的,因此链接时虚拟地址相同的程序,在运行的时候因为一级页表基地址不同,通过MMU转化后物理地址是不一样的。我们在这里只是给你理解下虚拟地址到物理地址大致的转换过程是什么,详细的可以参看下边的链接,
https://www.jianshu.com/p/646cc463789f