android 系统的启动流程源码解析

最近在看Android 源码,在看Android 系统的启动流程这部分,Android 的启动大致可以分为以下几个部分,后续我也会对其中的几个重要的部分单独在几篇文章里面介绍。

android 系统的启动流程主要有以下几个重要的过程:
1.启动电源以及系统启动

当电源按下时,引导芯片代码从预定义的地方开始执行,加载引导程序BootLoader 到RAM 中,然后执行

2. 引导程序bootLoader

引导程序BootLoader 是在Android 系统中运行的第一个程序,相当于Windows 的BIOS,它主要作用是把系统拉起来并运行。当 Linux 内核启动后会初始化各种软硬件环境,加载驱动程序,挂载根文件系统,Linux 内核加载的最后阶段会启动并执行第一个用户空间进程 init 进程。

3.Linux 内核启动

都知道android 系统是基于linux 的基础上来实现的。所以在android 系统启动之前,会先启linux 内核。当内核启动时,设置缓存,加载驱动,在内核完成系统设置后,它会首先在启动init 进程。

4. init 进程启动

init进程是android 系统的头号进程,因为他PID号为0,init 进程主要用来解析init.rc 文件,维护属性服务property service。以及用来启动Native 进程,例如,media,Zygote,surfaceflinger,servicemanager 进程。

5.启动开机动画

surfacefinger 进程启动它来播放开机动画

6.启动Zygote 进程

init 进程启动孵化进程 Zygote,Zygote进程如其名字一样,会去孵化一些系统的关键进程和应用程序进程,如,SystemServer。同时也会创建DVM和ART。

7. 启动Systemserver 进程

Zygote 孵化出Systemserver 进程,Systemserver又会创建出Android 系统java 层的核心服务,如AMS,PMS等。

8. 启动Launcher

启动主页Launcher,AMS 去启动主页的Launcher 界面

9.停止开机动画

当Launcher 启动完成后,会关闭开机动画,到此。android 系统也完全启动了。

更多相关文章

  1. 如何动态获取Android系统属性
  2. android 振动器系统
  3. 在ubuntu系统下cocos2dx移植到android平台
  4. Android平台中振动器系统详解
  5. 让你自己写的Android的Launcher成为系统中第一个启动的,也是唯一
  6. Android音视频-视频采集(系统API预览)

随机推荐

  1. android framework jni过程
  2. 更新android SDK的问题
  3. Android媒体解码MediaCodec MediaExtract
  4. Android内存分析和调优(下)
  5. Android编译选项eng、user、userdebug的
  6. 在Android中自定义IOS风格的按钮
  7. SharedPreferences的用法及指南
  8. android 程序错误全局处理
  9. Android加载图片时OOM异常解决办法——Bi
  10. 不能直接从eclipse拷贝源码到android系统