ARM9学习笔记之——MMU

本文介绍了ARM9中的虚拟内存管理,包括VA、MVA、PA的区别以及CP15在MMU中的作用。通过页表转换,详细阐述了段页、粗页和细页描述符的工作原理,探讨了地址空间分配和进程限制的问题。
摘要由CSDN通过智能技术生成

        我记得有一次我去应聘ARM-Linux软件工程师。结果被问到ARM中的虚拟内存是怎么管理的。由于我只对X86平台下的MMU了解,所以我被问倒了。原来我所学的只是皮毛。还有很多东西值得我去深入。要做ARM-Linux下的驱动,熟悉虚拟内存应该是必须的。

        ARM9中的虚拟内存是怎么实现的呢?以下是我的学习总结。

 

        ARM920T核是通过CP15来实现MMU机制的。

 

1. 关于地址

        要知道虚拟内存机制必须了解ARM9中的3种地址:VA(虚地址),MVA(修正后虚地址),PA(物理地址)

        1)VA,是程序中的逻辑地址,0x00000000~0xFFFFFFFF。

        2)MVA,由于多个进程执行,逻辑地址会重合。所以,跟据进程号将逻辑地址分布到整个内存中。MVA = (PID << 25)  | VA

        3)PA,MVA通过MMU转换后的地址。

        由2可知,地址位共32位,PID占7位,所以最多只能有 128 个进程。而每个进程可访问的地址位为25位,故只能分到 32MB 的地址空间。(注:不是物理内存空间)

        PID是存放在CP15协处理器的C13寄存器的高7位。

 

2. 关于虚拟内存转换<

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值