内核中与驱动相关的内存操作之一(MMU)

本文介绍了MMU(Memory Manage Unit)的作用,它解决了内存高效利用的问题,通过虚拟地址和物理地址的映射实现。文章详细讲解了虚拟地址和物理地址的概念,以及MMU如何进行地址转换。还探讨了页和页框的概念,描述了虚拟地址到物理地址的映射过程,并讨论了页表(TTB)和翻译旁路缓存(TLB)在地址转换中的角色。最后,文章阐述了条目(entry)的重要性和内存块的组织方式。
摘要由CSDN通过智能技术生成

1.MMU的存在意义:

    MMU(Memory Manage Unit)的出现是为了解决以下这类问题的一种"硬件算法"或者说策略:16MB的程序运行于4MB内存空间的问题,实现内存的更高效地利用.类比于现实生活中的银行.银行无须要保障每时每刻都准备充足以备所有用户同时取钱--这种情况基本上不会发生.通过挖东墙补西墙,实现资金的更高效利用.从而达到一种"动态平衡",而使人表面上看到的是"静止"的.

    1-1.虚拟地址:

    虚拟地址是指CPU物理寻址能力的地址范围,通常是PC指针的大小.它是由CPU的位数决定的,比如32位的CPU,它的物理寻址能力为0x0000 0000 ~ 0xffff ffff(2^32 = 4G).

    1-2.物理地址:

    和虚拟地址相对立,和实际设备相对应.比如256MB的32位的CPU而言,它的有效的物理空间为0x000000000~0x0FFFFFFF(256MB).物理地址有效访问范围为:基地址 ~ 基地址 + 0x0fffffff.

    物理地址是虚拟地址的一个子集.

    1-3.虚拟地址到物理地址的投射:

    我们实际的数据交互都没办法离开实质的物质存在作为载体.比如我们的物理地址范围为[BASE,BASE + 0x0FFFFFFF],如果代码操作在此区间之外的虚拟地址的话,必须要把这个虚拟地址投影到[BASE,BASE + 0x0FFFFFFF]这个范围之内.这工作由MMU完成.比如LINUX是一个虚拟内存的OS,操作的都是虚拟地址,因此必须要转化为物理地址去实现物理设备的操作.因此,它的宏观流程如下: 

虚拟地址-->MMU-->物理地址

2.页和页框:

    2-1.页(page):

    任何东西都存在其最基本单元,而虚拟地址以"页"为其基本单元.对于内核而言,页大小大多数平台架构下都是4KB.

    2-2.页框(frame):

    页框是实质物理地址空间的基本单元.

    虚拟地址和物理地址交互单元是"页<-->页框".就是说,虚拟地址上的"页"要和物理地址的"页框"相对应.因此,它们的大小必须相等.但是虚拟地址上的"页"和物理地址哪个"页框"关联,其过程是动态的,里面有硬件算法,而这种硬件算法的实现,就是由MMU去实现的.MMU一般是CPU里面的一个IP(内置外设).如下图所示:

   


    虚拟地址上的页被投影到物理地址上的哪一个页框是不定的,因此,页必须知道一种"信息"用来获取页是否可以被投影?如果多个页框可以被投影,那么选哪一个页框比较好?因此,页至少包含两部分信息:页期望投影到哪页框上?期望投影到的页框是否有效?对应页的"Frame Index | P".下面给出几个实例描述这一过程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值