Android是一个非常庞大,非常复杂的系统工程,通过系统调用(Syscall)连通系统的用户空间和系统空间,通过JNI(Java Native Interface)连接用户空间中的Java层和Native层(C++/Java)。

Google官方发布的Android四层架构图,将Android按照模块自下而上分为Linux Kernel(Drivers)、Libraries(Android Runtime)、Application Framework(Managers)、Application。

GitYuan将Android框架按照进程的启动视角分为Loader、Kernel、Native、Framework、App五层。

1、Loader:

Boot ROM:当手机处于关机状态,长安电源将i难道芯片执行固化在ROM内的内的代码,并加载引导程序到RAM中;

Boot Loader:启动Android系统之前的引导程序,主要是检查RAM、初始化硬件参数。

2、Kernel:

启动Kernel的Swapper进程(pid=0),初始化内存管理、进程管理/加载Driver;

启动Kernel的kthreadd进程(pid=2),该进程是内核进程,创建内核工作线程kworkder、软中断线程ksoftirqd、thermal等内核守护线程。kthreadd进程是所有内核进程的鼻祖。

3、Native:

包括init孵化而来的用户空间的守护进程、HAL层以及开机动画等。init进程的pid=1.init进程是所有用户进程的鼻祖。

init进程孵化出Zygote进程,Zygote进程是Android系统的第一个Java进程(即虚拟机进程),Zygote是所有Java进程的父进程。

4、framework:

Zygote进程,是由init进程孵化而来的进程,是所有java层进程的母体,所有的java层进程都是由Zygote孵化而来的。

System Server进程

Media Server进程

5、App层:

Zygote进程孵化出的第一个App进程是Launcher,这是用户看到的桌面App;

Zygote进程还会创建Browser,Phone,Email等App进程,每个App至少运行在一个进程上。

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

通信方式:

IPC(Inter-Process Communication,进程间通信),Linux目前有管道、消息队列、共享内存、套接字、信号量、信号通信方式,Android额外提供Binder通信方式。

Binder/Socket用于进程间通信,而Handler消息机制用于同进程的线程间通信。

更多相关文章

  1. android Application类的详细介绍
  2. Android(2017-2018)BAT面试题整理(Android篇,含答案)
  3. 使用 IntelliJ Debug Android(安卓)源码
  4. 进程博客纳入
  5. 从NDK在非Root手机上的调试原理探讨Android的安全机制
  6. android 杀掉进程
  7. Android(安卓)应用的真正入口 - ZygoteInit.java
  8. android broadcastReceiver生命周期及两种应用——四大组件之Bro
  9. Android(安卓)Service创建USB HOST通信

随机推荐

  1. android 开发技巧(8)--格式化 TextView
  2. 查看 apk 的信息
  3. android 实现左右拖动的网页焦点图
  4. android 调用相机拍照 并缩放切割图片
  5. Android中通过资源文件获取drawable的几
  6. Android(安卓)Studio BUILD FAILED finis
  7. 2011.09.23——— android sample之Notep
  8. android——xml drawable实现背景样式
  9. Android(安卓)Studio Button 美化
  10. android之button