打印

关于MMU的问题

[复制链接]
1622|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zqh1630|  楼主 | 2013-3-15 21:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MMU初始化,在linux内核那部分进行的啊?找了半天,没找到!!!
还有就是虚拟地址与物理地址的映射是人为指定的,还是有MMU处理的啊?
要是人为指定,那么在linux内核的那部分涉及到了??

还有就是要是访问arm处理器的寄存器,是不是也是通过MMU转换成物理地址去访问的啊??

相关帖子

沙发
阿南| | 2013-3-16 22:39 | 只看该作者
是MMU指定的,通常可以在处理器的汇编中找到MMU的初始化设置代码。

使用特权

评论回复
板凳
ymind| | 2013-3-17 08:52 | 只看该作者
本帖最后由 ymind 于 2013-3-17 08:55 编辑

  <MMU初始化,在linux内核那部分进行的啊?找了半天,没找到!!!
arm的话,arch/arm/mm/proc-*.S
   <还有就是虚拟地址与物理地址的映射是人为指定的,还是有MMU处理的啊?
页表在内存中人为建立,MMU处理。
   <要是人为指定,那么在linux内核的那部分涉及到了??
内核空间的固定映射在arch/arm/kernel/head*.S;内核空间的vmalloc, kmap区域是动态建立的,分别用于driver, 大虚空间,high memory等;用户空间更是按需建立(paging system)。后两者要理解代码,需相应理论知识。

   <还有就是要是访问arm处理器的寄存器,是不是也是通过MMU转换成物理地址去访问的啊??
cpu寄存器,协处理寄存器不需要,外设寄存器需要(当然是MMU使能的情况)。

使用特权

评论回复
地板
zqh1630|  楼主 | 2013-3-17 10:21 | 只看该作者
ymind 发表于 2013-3-17 08:52

要是人为指定虚拟地址与物理地址的映射,那是不是该把物理地址映射在内核空间的虚拟地址啊(即映射范围在3G-4G这个虚拟地址范围啊)???

使用特权

评论回复
5
ymind| | 2013-3-17 22:21 | 只看该作者
zqh1630 发表于 2013-3-17 10:21
要是人为指定虚拟地址与物理地址的映射,那是不是该把物理地址映射在内核空间的虚拟地址啊(即映射范围在 ...

准确说法是,内核空间从虚空间3G开始(也有1:1, 1:3, 3:1划分的),一般这段开始部分映射的是物理空间的物理内存部分(若物理内存大于虚空间,那仅是low memory部分)。

使用特权

评论回复
6
zqh1630|  楼主 | 2013-3-18 09:06 | 只看该作者
ymind 发表于 2013-3-17 22:21
准确说法是,内核空间从虚空间3G开始(也有1:1, 1:3, 3:1划分的),一般这段开始部分映射的是物理空间的 ...

有的s3c2410映射物理内存,就在0~3G空间,这样做为什么啊??要是映射在0~3G对内核空间的物理内存管理是不是就不方便啦??
还有就是物理内存映射在内核地址(3G-4G)之间,是不是为了方便内核管理内存啊??

使用特权

评论回复
7
ymind| | 2013-3-18 14:14 | 只看该作者
那不是Generic Linux,boot loader或uclinux可能会这样做。
虚空间划分为用户空间和内核空间,为了照顾用户程序的习惯或者说是兼容性,用户空间占0~3G,内核空间从3G起开始。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

893

帖子

1

粉丝