安卓系统启动流程解析

本文深入解析Android系统启动流程,从BootLoader初始化硬件到Linux内核加载,再到init进程、Zygote进程、SystemServer进程以及MediaServer进程的启动。讲解了每个阶段的关键任务,如加载boot.img、创建Dalvik虚拟机、启动核心服务等,帮助读者理解Android系统启动的全貌。

一直以来一直想有深入研究源码的想法,最近一段时间工作比较少,得以时间研究,有点心得就给大家分享,今天给大家带来的是安卓系统最开始的  


话不多说  首先放图





下面来详解这张图  

从系统的角度上来讲,Android系统的启动过程可以分为 bootloader 引导,装载和启动 linux内核 启动Android系统

BootLoader

bootloader 相当于电脑上的Bios 他的主要作用就是初始化基本的硬件设备,建立内存空间映射, 为装载linux内核准备好运行环境,当linux内核加载完毕之后,bootloder就会从内存中清除

对于FastBoot和Recover估计好多童鞋都不理解,fastboot是Android设计的一套通过usb来更新手机分区的映像协议,不过大部分厂商都搞掉了  google的nexus 上应该有的

Recovery模式是Android特有的升级系统,通过这个可以进行手机恢复出厂设置,或执行OTA,补丁和固件升级,实质是启动了一个文本模式的Linux。

bootloader启动后会向内存中装载boot.img镜像文件,这个镜像文件存放的是linux内核和一个根文件系统,linux内核进行初始化之后,装载完文件系统,就启动了init进程

Init进程

init进程是Linux创建的第一个进程,init进程会解析linux的脚本文件init.rc,根据这个文件的内容 init进程会装载Android的文件系统,创建系统目录,初始化属性系统,启动Android系统的重要的守护进程等,如上图,


下面简单的介绍一个下init进程fork出的几个重要的进程:

Zygote进程: 当init进程初始化结束的时候,会启动Zygote进程,看上图可以看出来 zygote进程扶着fork出应用进程,是所有进程的父进程,Zygote进程初始化的时候会创建Dalivik虚拟机,预装载系统的资源文件和java类,所有从Zygote进程fork出的用户进程将继承和共享这些资源,不用浪费时间重新加载(看到这里是不是感觉突然明白了什么?)干完这些之后,Zygote进程也将变为守护进程,负责响应启动APK应用的启动请求。

SystemServer进程:SystemServer进程是Zygote进程fork出的第一个进程,也是整个Android系统的核心进程,在SystemServer主要运行的是Binder服务,SystemServer首要启动本地服务 SensorService 接着启动 ActivityManagerService,WindowsManagerService,PackgeManagerService等在内的所有java服务。


MediaServer进程:也是由init进程启动,他包含了一些多媒体相关的本地Binder服务,包括CameraService,AudioFilingerService ,和AudioPolicyService。



当SystemServer加载完所有Java服务后最后会调用ActivityManagerService的SystemReady()方法,

        // We now tell the activity manager it is okay to run third party
        // code.  It will call back into us once it has gotten to the state
        // where third party code can really run (but before it has actually
        // started launching the initial applications), for us to complete our
        // initialization.
        mActivityManagerService
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值