梳理一下Android 系统启动流程

Android系统是一款基于Linux的开源系统,系统的架构划分为:系统应用层、Java API Framework层、native C/C++库和Android 运行时、硬件抽象层、和Linux内核层。

各层级之间的衔接关系可以以进程的视角来理解。如下图,

  • 当按下手机的开机键,会引导芯片从固化在ROM里的预设代码开始执行,加载引导程序到RAM

  • 然后启动Android系统的引导程序Boot Loader
    引导程序的主要作用是:1 检测外部的RAM;2 引导程序设置网络、内存等。

  • 进入内核层
    ①启动swapper进程(pid = 0,又叫idle进程,是系统初始化过程中开创的第一个进程),用于初始化进程管理、内存管理,加载Display,Camer Driver,Binder Driver等工作。
    ②启动kthreadd进程(pid = 2),是Liunx系统的内核进程,会创建内核工作线程kworkder,是所有内核进程的鼻祖
    pid:是进程号

  • 当kernel启动过程中会创建init进程(pid = 1),init进程是用户空间的第一个进程

  • init进程会启动Zygote进程、serviceManager。Zygote进程是所有app的父进程

  • 接着Zygote进程fork出systemserver进程以及各种app进程。
    图片来自 http://gityuan.com/images/android-arch/android-boot.jpg
    图片参考自 http://gityuan.com/images/android-arch/android-boot.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值