Android系统启动过程
- 当我们按下电源键,引导芯片代码从预定义的地方(固话在ROM中)开始执行,加载引导程序Bootloader到RAM中,然后执行;
- BootLoader是android系统中的一个小程序,主要是将系统OS运行起来;
- 启动Linux内核,在系统文件中寻找init.rc文件,并启动init进程;
第一步:init进程启动
该进程是android系统中用户空间启动的第一个进程,进程号为1;该进程由多个源文件组成,这些文件位于/system/core/init中
该进程主要作用:
- 初始化和启动属性服务
- 启动Zygote进程(app_mian的main()->runtime.start()此时Zygote就完成启动了)
第二步;创建Zygote进程
也被称为孵化器
Zygote进程在启动时会创建DVM或者ART,因此通过Fock的应用程序或者SystemServer进程可以获取一个DVM或者ART的虚拟机副本实例;
主要作用:
- 创建Java虚拟机
- 创建服务端Socket,等AMS发送创建新应用程序请求
- 启动SystemServer进程
SystemServer进程:该进程主要用于***创建系统服务***
- 创建Binder线程池
- 创建SystemServiceManager启动了系统服务
系统服务分为三类:
- 引导系统服务
- 核心系统服务
- 其他系统服务
为三类:
- 引导系统服务
- 核心系统服务
- 其他系统服务