庖丁解牛式剖析详解linux内核内存管理子系统-内核head.S的__create_page_tables介绍

内核head.S的__create_page_tables介绍

各位老铁们,前片文章咱们粗略地堆MMU有了一定的认识,知道了他是谁干什么用的?有了堆MMU的理解,咱们才能进一步理解__create_page_tables。
在uboot完成相关硬件的初始化后,最后跳转到kernel的入口函数(假设地址为0x40000000,那么就会将PC设置为0x40000000),此时,由于MMU尚未开启,所以程序一直运行在物理地址空间,也就是PC的值,也就是指令地址,都是物理地址
一旦MMU开始后,地址就会经过MMU转换为物理地址,也就是所有地址就会被认为是虚拟地址,所以__create_page_tables的使命是在开启MMU前,做一下前期的准备,那下面我们看下__create_page_tables都做了那些工作?

__create_page_tables都做了什么?

在这里插入图片描述
__create_page_tables会把内核镜像编译链接的虚拟地址与其所存放在memory内的物理地址二者之间的映射建立起来,这样,一旦开启MMU,MMU就会把CPU发出访问的编译链接虚拟地址依照这种建立好的映射进而转换翻译为memory的物理地址,这样CPU就可以正确的得到其发出访问虚拟地址对应物理地址内的指令或数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值