Android开机底层流程,安卓系统启动流程

长按电源键,屏幕上出现了android的字样,过了一会出现了桌面程序。这一整个流程在安卓系统中是怎么实现的?通过这篇文章,希望你能大致了解一下安卓系统的启动流程,也希望我能牢牢记住。

安卓系统分层

安卓系统从上到下分为四层:应用层,应用程序框架层,系统运行库层和linux内核层。我们先了解一下各个层的功能。

9092a11e38de

image.png

Linux内核层

安卓系统的核心是Linux2.6内核,在原有Linux内核的基础上增加了binder驱动和电源管理。

Linux内核为安卓系统提供内存管理,进程管理,网络协议和各种驱动(如显示驱动、相机驱动、蓝牙驱动等)。

系统运行库层

启动包括 C/C++库和android runtime

C/C++库

包含了一些C/C++库,如

1.系统C库(专门为基于 embedded linux 的设备定制)。

2.媒体库(基于 PacketVideo OpenCORE,该库支持多种音频、视频格式的回放和录制。同时支持静态图片文件。编码格式包括:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG)。

3.SurfaceManager,对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。

4.LibWebCore,一个最新的web浏览器引擎,支持安卓浏览器和应用的webview。

5.SGL,底层的2D图形引擎。

6.3D libraries:基于OPENGL ES 1.0 API实现,该库可以使用硬件加速或者高速的软加速。

7.FreeType:位图和矢量字体显示。

8.SQLLite,一个轻量级数据库。

android runtime

由于安卓应用由java语言开发,所以需要提供java语音的运行环境。这包括Dalvik虚拟机,java库。

应用框架层

应用框架层为应用层开发提供了各种组件和服务,相当于一个应用程序的脚手架。为应用层提供一下的API

1.丰富可扩展的视图(view)

2.内容提供器(ContentProvider)向其他应用提供数据

3.资源管理器(ResourceManager),提供非代码资源的访问,如图片,本地字符串

4.通知管理器(NotificationManage),使应用程序可以在通知栏中显示信息

5.活动管理器(ActivityManager),使管理activity的生命周期

应用层

android的应用主要由java程序编写,包含各种资源文件。与用户进行交互。

安卓系统启动流程

安卓系统的启动流程如下图所示

9092a11e38de

image.png

其中有很多模块,我们先来简单了解一下这些模块。

BootRom

固定在Rom上的一段导引程序

swapper

Linux内核的第一个进程,孵化出第一个用户空间进程和第一个内核空间进程

init进程

第一个用户进程,是所有用户进程的父进程,主要启动Media Server(多媒体服务),service Manager(bidner服务管家),bootanim(开机动画)。还会孵化出Zygote进程(第一个java进程)

Zygote进程

第一个java进程,加载虚拟机,加载系统资源,孵化SystemServer进程

SystemServer进程

Zygote孵化出的第一个进程,用户管理java framework,包含activity Manager、PowerManager等重要服务

Media Server进程

负责启动和管理整个C++ framework,包含AudioFlinger、Camera Service等服务

Launcher

桌面程序,是Zygote孵化出的第一个桌面进程

安卓系统启动流程

1.长按电源按键,ROM中的Boot加载BootLoader到RAM中,BootLoader启动Linux内核

2.启动第一个进程,该进程启动pid=1的init进程(第一个用户空间进程)和pid=2的kthreadd进程(第一个内核空间进程)。同时,初始化各种驱动,如camera dirver、Binder driver等。

3.init进程启动bootanim(开机动画),serviceManager(用户binder通信),MediaServer,同时,init进程孵化出第一个java进程Zygote。

4.Zygote是第一个java进程,是所有java进程的父进程,几乎所有的java进程都是由Zygote孵化出来的。Zygote进程孵化出SystemServer进程。

5.MediaServer,用户启动和管理C++ framework。

6.SystemServer,用于启动和管理所有java framework。

7.Zygote孵化出起一个APP进程Launcher(桌面),启动Launcher(桌面)和浏览器、邮箱等各种App。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值