zoukankan      html  css  js  c++  java
  • MMU

    MMU(内存管理)

    1:将程序中的虚拟地址映射到具体的物理地址,所谓虚拟地址,即为程序中的地址,对于不同的程序所使用的虚拟地址可能相同,但是通过mmu,可以将其映射到不同的物理地址,防止访问上的冲突。

    2:控制访问的权限管理。

    深入剖析地址转换

    对于一个地址,假设为32位的虚拟地址:

    31-20位索引符

    根据高31-20位描述符表数据,在translation table中找到一个32位的表项。

    1-0

    这个表项的最后两位决定寻址方式:

    00:表示无效的转化方式

    01:表示粗页转化方式,较少用

    10:表示段转化方式

    11:表示细页转化方式

    注意四几个问题:

    1:表象是由工程师自己建立的

    2:表项的存储在内存中

    3:表项的基地址TTB(translation table base),这个地址由工程师自己决定,定义好后,将地址存储到cp15中的c2寄存器中。

    段转换方式

    表项:

    基地址31-20

     10

    虚拟地址:

    31-20位索引符

    表项的最后两位为10,则表示使用段转化方式,相应的虚拟地址中19-0位则作为偏移地址。

    段式一阶表项结构:

    cachebuffer

    上图是CPU读取数据需要经过哪些部分缓冲区

    ARM 中将存储空间分为了16个域,具体使用哪个域由一级表项中的“damain()”决定

    细页转换方式:

    虚拟地址:

    31-20位索引符(实际上是一级也表的偏移)

    19-11二级页表偏移地址

    10-0位物理页偏移地址

    一级页表项:

    31-20位二级页表基地址

     11

    二级页表项:

    物理页基地址

    注意:一级表项和二级页表是需要工程师自己定义的。

  • 相关阅读:
    [面试题]什么是面向对象编程
    面向对象编程的新手理解
    Object of type type is not JSON serializable
    STL---map
    STL---llist
    Div标签使用inline-block有间距
    STL---vector
    KMP算法
    算法06
    算法05
  • 原文地址:https://www.cnblogs.com/big-devil/p/8589410.html
Copyright © 2011-2022 走看看