Android系统启动流程

1.init进程启动(用户空间第一个进程)

总结:
a.创建和挂在启动所需的文件目录
b.初始化和启动属性服务
c.解析init.rc配置文件并启动Zygote进程

2.Zygote进程启动过程(创建应用程序进程和SystemServer进程)

Zygote的main方法:
1.创建一个server端的socket。
2.预加载类和资源
3.启动SystemServer进程
4.等待AMS请求创建新的应用程序进程。
总结:
1.创建AppRuntime并调用其start方法,启动Zygote进程
2.创建Java虚拟机并为Java虚拟机注册JNI方法。
3.通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层。
4.通过registerZygoteSocket方法创建服务器端Socket,并通过runSelectLoop方法等待AMS的请求来创建新的应用程序进程。
5.启动SystemServer进程。

3.SystemServer处理过程(主要用来创建系统服务)

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

4.Launcher启动过程

系统启动的最后一步是启动一个应用程序用来显示系统中已经安装的应用程序,这个应用程序就叫做Launcher。
作用:
1.作为android系统的启动器,用于启动应用程序
2.作为Android系统的桌面,用于显示和管理应用程序的快捷图标或者其他桌面组件

Android系统启动流程

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值