博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OK6410A 开发板 (八) 32 linux-5.11 OK6410A 从内存角度简略分析整个启动过程
阅读量:4285 次
发布时间:2019-05-27

本文共 933 字,大约阅读时间需要 3 分钟。

从 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
你可能感兴趣的文章
NESSUS扫描操作指导
查看>>
C语言读取文件大小,载入文件全部内容
查看>>
C语言 static静态变量的作用
查看>>
Linux(C/C++)下的文件操作open、fopen与freopen
查看>>
C语言 文件操作的头文件
查看>>
C语言的常用库函数(dos)之四(dir.h文件下的一些函数)
查看>>
warning: jobserver unavailable: using -j1. Add `+' to parent make rule问题怎么解决
查看>>
防火墙报文转发流程
查看>>
以太坊创始人:17岁的亿万富翁养成记
查看>>
linux下IPTABLES配置详解
查看>>
关于iptables -m选项以及规则的理解
查看>>
linux系统中查看己设置iptables规则
查看>>
一些库函数的使用注意事项
查看>>
IPv6地址自动配置中的有状态(stateful)和无状态(stateless)的区别
查看>>
阿里云 ACP 云安全 题库总结
查看>>
阿里云 ACP 云安全 题库 -- 数据库审计部分
查看>>
GC 回收机制
查看>>
探究 Android MVC、MVP、MVVM 的区别以及优缺点
查看>>
深入分析 Handler 内存泄露
查看>>
解决 windows 文件被占用的问题 -- The action can‘t be completed because the folder is open in another program
查看>>