2020-11-17

Android系统的启动流程

  • 板子上电后运行固化在 ROM 中的代码,加载 Bootloader 到 RAM。
  • Bootloader 启动,引导进入 Linux 内核。
  • Kernel 启动 swapper 进程。即 idle 进程,pid = 0,系统初始化过程中的第一个进程,用于初始化 进程管理、内存管理、加载 Display、Camera Driver、Binder Driver 的工作。Kernel 启动 init 进程(pid = 1),用来孵化用户空间的守护进程、HAL、开机动画等。Kernel 启动 threadd 进程(内核进程的父进程),pid = 2,创建内核工程线程 kworkder,软中断线程等。
  • init 进程 启动一些 Daemon 守护进程:ueventd、logd、healthd、installd、adbd、lmkd 等;init 进程启动servicemanager、bootanim、等native层服务;init 进程通过app_process进程(native)启动Zygote进程(java),Zygote进程是Android系统的第一个Java进程,Zygote是所有Java进程的父进程(Android 应用程序的祖宗),Zygote进程本身是由 init 进程孵化而来的。
  • Zygote 中创建 System Server 和 App。它是 Android 系统的核心进程,提供了应用程序生命周期管理等各种 Service。

 

1.3.2 开机流程每个阶段对应LOG的分析

  • Kernel LOG:
  1. Starting kernel ... //kernel启动
  2. init: init first stage started!//init进程启动
  • Android LOG:
  1. Zygote32Timing: PostZygoteInitGC took to complete: 14ms
  2. Zygote64Timing: ZygoteInit took to complete: 6064ms//zygote启动完成
  3. SystemServer: StartServices // SystemServer开始启动系统服务
  4. ActivityManager: System now ready //Android服务启动完成
  5. WindowManager: Screen frozen for +1s508ms due to Window //Luncher启动完成
  • Event LOG:
  1. boot_progress_start //Android层每次启动的LOG
  2. am_activity_launch_time: [0,171061223,com.hisilicon.launcher/.MainActivity,1571,1571]//系统启动完成

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值