OK6410A 开发板 (八) 32 linux-5.11 OK6410A 从内存角度简略分析整个启动过程


从 arch/arm/kernel/head.S 中的 stext 到 内核 rest_init 的 system_state = SYSTEM_SCHEDULING;
分析 整个内存的启动过程

至于 为什么不分析 arch/arm/boot/compressed/head.S 中的start 到 arch/arm/kernel/head.S 中的 stext
因为 这个过程可以不跑的话, linux 也能运行起来
之前在 https://blog.csdn.net/u011011827/article/details/115944495 分析 过,此过程 跑不跑 带来的效果的是一样的

整个过程可以分段为5个阶段
A arch/arm/kernel/head.S 中的 stext符号 - __turn_mmu_on符号
----此时开了MMU,开启了虚拟内存时代
B __turn_mmu_on符号 - setup_arch->paging_init->bootmem_init->memblock_allow_resize返回
----此时memblock初始化完成,开启了基于虚拟内时代的 memblock内存管理器时代
C setup_arch->paging_init->bootmem_init->memblock_allow_resize返回  - mm_init->mem_init返回
----此时memblock消亡,buddy初始化完成,开启了基于虚拟内时代的 buddy内存管理器时代
D mm_init->mem_init返回 -> mm_init->kmem_cache_init返回
----此时slab建立,开启了基于 buddy内存管理器时代 的 slab内存管理器时代
E mm_init->kmem_cache_init返回 -> mm_init->vmalloc_init返回
----此时vmalloc建立,
----此时,buddy,slab,vmalloc 三个内存管理器 共同提供 内存申请释放服务
---- buddy 	负责 大额内存申请
---- slab 	向 buddy 申请大额内存后,提供给用户小额内存借贷
---- vmalloc 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值