梳理一下Android 系统启动流程

本文介绍了Android系统,它基于Linux开源。其架构分为系统应用层、Java API Framework层等多层级。从进程视角看,按下开机键后,引导程序启动,进入内核层依次启动swapper、kthreadd进程,随后创建init进程,它再启动Zygote进程,Zygote进程又fork出systemserver及app进程。

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值