Android系统启动流程

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。