Android系统启动过程

1、Bootloader引导

bootloader主要的作用是初始化基本的硬件设备并且通过建立内存空间映射,为装载Linux内核准备好合适的运行环境;一旦Linux内核装载完毕,bootloader将会从内容中清除。
如果用户在bootloader运行期间,按下预定义的组合键,可以进入系统的更新模块,可以选择进入Fastboot模式或者Recovery模式。Fastboot是Android设计的一套通过USB来更新手机分区映像的协议,方便开发人员能快速更新指定的手机分区;Recovery模式是Android特有的升级系统,利用Recovery模式,手机可以进行恢复出厂设置或者执行OTA、补丁和固件升级。进入Recovery模式实际上是启动了一个文本模式的Linux。

2、装载和启动Linux内核

      Andriod的boot.img存放的就是Linux内核和一个根文件系统。Bootloader会把boot.img映像装载进内存,接着Linux内核会执行整个文件系统的初始化,然后装载根文件系统,最后启动Init进程。

3、启动Init进程

      Init进程是系统的第一个进程,在Init进程的启动过程中,会解析Linux的配置脚本init.rc文件。根据init.rc文件的内容,Init进程会装载Android的文件系统、创建系统目录、初始化属性系统、启动Android系统的重要的守护进程。
(守护进程:即后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止)

4、启动ServiceManager

      ServiceManager由Init进程启动,主要的作用是管理Binder服务,负责Binder服务的注册与查找。

5、启动Zygote进程

     Init进程初始化结束时,会启动Zygote进程。Zygote进程负责fork出应用进程,是所有应用进程的父进程。Zygote进程初始化时会创建Dalivik虚拟机、预装载系统的资源文件和Java类,所有从Zygote进程fork出的用户进程将继承和共享这些预加载的资源,不再浪费时间重新加载。
     关于fork函数:一个进程调用fork()函数后,系统先给新的进程分配资源,如存储数据和代码空间,然后把原来进程的值都复制到新的进程中,只有少数值与原来不同,相当于克隆了一个自己。fork()函数的特性:fork()函数仅仅被调用一次,却能返回两次,可能有三种不同的返回值:在父进程中,返回新创建子进程的进程Id;在子进程中,返回0;出现错误,返回负值。出现错误的原因:当前进程数已达到系统规定的上限;系统内存不足。

6、启动SystemServer

      SystemServer是Zygote进程fork出的第一个进程,也是整个Android系统的核心进程。在SystemServer中运行着Android系统大部分的Binder服务。SystemServer首先启动本地服务Sensor Service;接着启动包括ActivityManagerService、WindowsManagerService、PackageManagerService在内的所有Java服务。

7、启动MediaServer

      MediaServer由Init进程启动,它包含了一些多媒体相关的本地Binder服务,包括:CameraService、AudioFlingerService、MediaPlayerService和AudioPolicyService。

8、启动Launcher

     SystemServer加载完所有Java服务后,最后会调用ActivityManagerService的SystemReady()方法。在这个方法的执行中,会发出Intent “android.intent.category.HOME"。凡是响应这个Intent的apk应用都会运行起来,Launcher应用是Android系统默认的桌面应用,一般只有它会响应这个Intent。

参考资料:

深入解析Android 5.0系统   刘超著  人民邮电出版社
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值