Android系统启动流程学习入门及其参考

1. init进程启动过程

主要代码文件目录:system/core/init/

总结

init 进程启动做了很多的工作,总的来说主要做了以下三件事:

1)创建和挂载启动所需的文件目录。
  (2)初始化和启动属性服务。
  (3)解析 init.rc 配置文件并启动 zygote 进程。

参考学习资料

2. Zygote进程启动过程

在init进程中通过 AppRuntime 类(/frameworks/base/cmds/app_process/app_main.cpp)并调用其 start 方法 ,启动 Zygote 进程。

总结

Zygote 进程启动共做了如下几件事情:

1)创建 Java 虚拟机并为 Java 虚拟机注册 JNI 方法
  (2)通过JNI调 用 Zygotelnit的 main 函数进入 Zygote的 Java 框架 层。
  (3)通过 registerZygoteSocket方法 创建服务器端 Socket ,并通过 runSelectLoop 方法 等 AMS 的请求来创建新的应用程序进程。
  (4)启动 SystemServer 进程。

参考学习资料

3. SystemServer进程启动过程

在ZygoteInit.java的forkSystemServer方法中启动了SystemServer进程,代码在如下目录:frameworks/base/core/java/com/android/internal/os/Zygotelnit.java

总结

SystemServer 进程被创建后,主要做了如下工作:

1)启动 Binder 线程池,这样就可以与其他进程进行通信。
      (2)创建 SystemServiceManager ,用于对系统的服务进行创建、启动和生命周期管理。
      (3)启动各种系统服务。

学习参考资料

4. Launcher启动过程

通俗来讲 Launcher 就是 Android 系统的桌面,它的作用主要有以下两点:
(1)作为 Android 系统的启动器,用于启动应用程序
(2)作为 Android 系统的桌面,用于显示和管理应用程序的快捷图标或者其他桌面组件。
启动Launcher的入口为AMS(ActivityManagerServer)的sytemReady方法,它在SystemServer的startOtherServices方法中被调用,代码目录:frameworks/base/services/java/com/android/server/SystemServer.java

学习参考资料

5. Android 系统启动流程

总结

	 1. 启动电源以及系统启动
       当电源按下时引导芯片代码从预定义的地方(固化在 ROM )开始执行。加载引导程序 BootLoader到RAM ,然后执行。
     2. 引导程序 Bootloader
       引导程序 BootLoader 是在 Android 操作系统开始运行前的一 个小程序,它的主要作用是把操作系统 拉起来并运行。
     3. Linux 内核启动
       当内核启动时  ,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找 init.rc 文件,并启动 init 进程。
     4. init 进程启动
       初始化和启动属性服务,并且启动 Zygote 进程。
     5. Zygote 进程启动
       创建Java 虚拟机并为 Java 虚拟机注册 JNI 方法 ,创建服务器端 Socket ,启动SystemServer 进程。
     6. System Server 进程启动
       启动 Binder 线 程池和 SystemServiceManager ,并且启动各种系统服务。
     7. Launcher 启动
       SystemServer 进程启动的 AMS 会启动 Launcher, Launcher 启动 后会将己安装应用的快捷图标显示到界面上。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值