Android系统启动流程总览

本文详细介绍了Android系统的启动流程,从uboot的两个阶段功能,包括硬件初始化、加载第二阶段代码,到kernel启动、内核编译调试,再到init进程、zygote启动,最后进入java世界的过程。内容涵盖uboot调试方法,以及从启动内核到显示Launcher的整个过程。
摘要由CSDN通过智能技术生成

绪论

    Android是基于Linux内核的, 可扩展的智能终端设备. 越来越多的用户使用Android设备, 而移动智能时代已经悄然而至,很多人都感觉这是一个神奇的世界, 对其知之甚少. 就让我们通过本文来揭开Android设备系统启动的神秘面纱,以此来了解这个神秘的世界.

Android系统总览

    当电源键按下,引导芯片代码开始从预定义的地方(固化在ROM)开始执行,加载引导程序到RAM,然后执行。
引导程序是Android操作系统开始运行前的一个小程序,一般使用bootloader作为引导程序。引导程序分为两个阶段执行:
1)检测外部的RAM以及加载对第二阶段有用的程序。
2)引导程序设置网络,内存等等。
引导程序可以根据配置参数或输入数据进行配置内核,并且进行加载内核。
    内核启动时会进行设置缓存,被保护存储器,计划列表,加载驱动。当内核完成系统设置后,它首先在系统文件中寻找init文件,然后启动init进程。
    Init进程是Linux起来之后启动的第一个用户进程,android系统就是在这个进程的基础上启动起来的,进程号为1,init进程主要就是挂载文件目录,如sys/,dev/,proc/。另外就是运行init.rc脚本。由于在init.rc中有对启动Zygote的参数配置,所以最终可以将Zygote启动起来。
    Zygote是一个孵化器进程,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育fork出来的。在Zygote中进行添加虚拟机参数,并将其启动起来,然后注册JNI函数。在Zygote中进行预加载以及初始化核心类库。最后将SystemServer启动起来。
    在SystemServer中进行对各种系统服务对象进行创建,并将创建好的对象,添加进SeviceManager中可以让其他模块通过ServiceManager就可以获得所需要的服务对象。
    前面所有事情都完成后,就可以进行启动Launcher了,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值