Android系统启动流程

        从系统角度看,Android的启动过程可以分为三个部分,分别是bootloader引导、裝载、启动,启动Linux内核和启动Android系统,下图描述了整个系统的启动过程:

下面介绍设备的启动过程。

 1. Bootloader引导 

当按下设备电源键时,最先运行的就是bootloader,bootloader的主要作用就是硬件设备(如CPU、flash、内存)的初始化,并通过建立内存空间映射,为装载linux内核做好准备,一旦Linux内核装载完毕,bootloader将会从内存中清除。如果bootloader在运行期间,按下预定义的组合按键,可以进入系统的更新模块:fastboot和Receiver模式。 fastboot是Android设计的一套通过USB来更新分区映像的协议,方便开发人员快速的更新指定分区。Receiver模式是Android特有的升级系统,利用该模式,手机可以恢复出厂设置、ota升级、补丁和固件升级。

2.装载和启动Linux内核

Android系统的升级包update.zip中存在一个boot.img,该镜像就是Linux内核和根文件系统,bootloader会把该镜像装载到内存中,然后linux内核会执行整个系统的初始化,完成后装载根文件系统,最后启动init进程。

3.启动Init进程

Linux内核加载完毕后,会首先启动Init进程,Init进程是系统的第一个进程。在Init进程的启动过程中会解析Init.rc脚本,根据init.rc文件的描述,系统会建立文件系统,初始化属性和启动Android系统重要的守护进程,如adbd,vold等等

4.启动ServiceManager

ServiceManager有Init进程启动。它的主要作用是管理Binder服务,service服务的注册和查找,如ams、pms、ams都是通过ServiceManger来管理。

5.启动MediaServer

MediaServer是由Init进程启动,它包含了一些多媒体binder服务,包括CameraService、MediaPlayerService、AudioPolicyService等等

6.启动Zygote进程

 Init进程初始化结束后,会启动Zygote进程。在Android系统中所有的应用程序进程和系统服务进程都是有Zygote进程fork出来的,这就是问什么叫它Zygote(受精卵)的原因。Zygote进程会创建dalivik虚拟机(ps:因为java服务需要通过虚拟机来启动,没有办法通过linux进程启动)、预装载系统的资源文件,所有从Zygote进程fork出的子进程都会共享这些资源,节省了资源加载的时间,提高的应用的启动速度。Zygote启动结束后也会变为守护进程,负责响应启动APK的请求。

7.启动SystemServer

SystemServer是Zygotefork出的第一个子进程,同时也是整个Android系统的核心。在系统中运行的大部分系统服务都是有SystemServer创建。比如SystemServer首先会启动SensorService,接着会启动AMS、WMS、PMS等。

8.启动Launcher

SystemServer加载完所有Java服务后,最后会调用ams的systemReady方法,在这个方法中会发出home-Intent启动Launcher应用,至此运行成功,系统便启动完成。

转载于:https://my.oschina.net/wangyujue1991/blog/690537

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android系统启动流程可以分为以下几个步骤: 1. 启动电源以及系统启动:当电源按下时,引导芯片代码开始执行,加载引导程序Bootloader到RAM,并执行该程序。 2. 引导程序Bootloader:引导程序是一个小程序,其主要作用是将系统OS启动起来并运行。 3. Linux内核启动:内核启动时,进行系统设置,包括设置缓存、被保护存储器、计划列表,并加载驱动。内核会在系统文件中寻找"init"文件,并启动init进程或系统的第一个进程。 4. init进程启动:init进程是Android系统的第一个用户空间进程,它负责启动和管理其他系统进程。init进程会读取init.rc文件,根据其中的配置启动系统服务和应用进程。 5. Zygote进程和SystemServer进程启动:Zygote进程是一个特殊的进程,它作为应用进程的模板,用于快速创建新的应用进程。SystemServer进程是Android系统的核心服务进程,负责启动和管理各种系统服务。 6. 应用层进程启动:在Android系统中,应用层进程包括Launcher进程,即主屏幕的进程,以及其他应用程序的进程。这些进程会根据用户的操作和应用的需求来启动和管理。 总结起来,Android系统启动流程包括引导程序Bootloader的加载和执行、Linux内核的启动、init进程的启动、Zygote进程和SystemServer进程的启动,以及应用层进程的启动。这些步骤共同完成了Android系统的初始化和启动。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Android系统启动流程(一)解析init进程启动过程](https://blog.csdn.net/itachi85/article/details/54783506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Android系统启动流程](https://blog.csdn.net/xhmj12/article/details/128149490)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Android 面试必备 - 系统、App、Activity 启动过程“一锅端”](https://blog.csdn.net/zzz777qqq/article/details/115698795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值