美文网首页android
Android系统启动(一)-开篇

Android系统启动(一)-开篇

作者: Stan_Z | 来源:发表于2018-11-05 19:47 被阅读52次

从这个篇章开始,简单总结下Android系统的启动流程,属于framework学习的基础总结。

先从如下图了解下Android系统的分层:

from gityuan

图解: Android系统启动过程由上图从下往上的一个过程:Loader -> Kernel -> Native -> Framework -> App,接来下按从下到上的顺序简要介绍下每层:

Loader层:激活Kernel。

  • 启动电源以及系统启动:当电源按下时引导芯片代码将固化在ROM中的引程序Bootloader加载到RAM,然后执行。
  • 引导程序Bootloader:它是Android操作系统开始运行前的一个小程序,负责把系统OS拉起来并运行。
  • linux内核启动:内核启动时,设置缓存、被保护存储器、计划列表,加载驱动等,为最终调用系统内核准备好环境。

Kernel层:Android内核空间,到这里才刚刚开始进入Android系统。

Bootloader启动Kernel的swapper进程(pid=0),它是内核首个进程,用于初始化进程管理、内存管理、加载各种驱动。更重要的是启动如下两个重要进程:

  • init进程(pid=1):用户进程的鼻祖
  • threadd进程(pid=2):内核进程的鼻祖
    这层真正大主管是threadd进程,会创建内核工作线程kworkder,软中断线程ksoftirqd,thermal等内核守护进程。

Native层:进入用户空间。

这层init进程(pid=1)是大主管。它负责孵化各种系统级服务、守护进程等。最重要的是孵化出Zygote进程:Java进程的鼻祖。

Framework层:在Native之上,也是用户空间,主要给app层提供api以及系统服务。

这层大主管是 Zygote进程。它负责注册Zygote Socket服务端套接字,加载虚拟机,preloadClasses和preloadResouces。最重要的是孵化如下两个重要进程:

  • System Server进程:负责启动和管理整个Java framework,包含AMS、WMS、PMS等服务。
  • Media Server进程:负责启动和管理整个C++ framework,包含AudioFlinger,Camera Service等服务。

App层:应用程序。

所有的App进程都是由Zygote进程fork生成的。

参考:
http://gityuan.com/android/

相关文章

网友评论

    本文标题:Android系统启动(一)-开篇

    本文链接:https://www.haomeiwen.com/subject/iekexqtx.html