Android系统启动流程

2020-07-21  本文已影响0人  dreamkid

我们在按下电源键到开机整个过程中系统是如何启动的呢

1.加载bootloader

按下电源时引导芯片代码从预定义的地方(固定rom)开始执行,加载引导程序bootloader到RAM执行

2.Linux内核启动

bootloader是Android系统运行前的一个小程序,目的是将系统os拉起来

3.启动init进程

Linux内核启动后,经过一系列系统设置并查找init.rc文件解析并启动init进程,init进程会初始化和启动属性服务,挂载目录,启动Zygote进程

4.Zygote进程启动

Zygote进程会创建Dvm,创建服务端socket等待ActivityManagerService请求Zygote创建新的应用程序进程,启动SystemServer进程

5.SystemServer进程启动

SystemServer进程启动Binder线程池来进行进程间通信,创建SystemServiceManager启动各种系统服务

6.启动Launcher

Launcher启动后会将已安装的应用程序图标显示在桌面上

启动流程图如下:

image

Binder线程池

Android进程间通信使用Binder机制,binder线程池用来进程间通信的

SystemServer进程

用来创建和管理各种系统服务如AMS,PMS等

Android系统启动何时进入Java框架层的呢?
init进程启动是通过app_main.cpp的main方法启动的,在main方法中通过AppRuntime的start方法启动init进,ApRuntime继承AndroidRuntime,在AndroidRuntime的start方法中用JNI的方式调用了ZygoteInit的main方法,此时就进入了Java框架层.

感谢
https://www.jianshu.com/p/46d9d625563a
https://www.jianshu.com/p/1d3e722871e8
https://blog.csdn.net/itachi85/article/details/56669808

上一篇 下一篇

猜你喜欢

热点阅读