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. 进程博客纳入
  2. android中的线程池
  3. android 杀掉进程
  4. Android异步更新UI-线程池-Future-Handler实例分析
  5. Android Service创建USB HOST通信
  6. Android 进程和线程模型
  7. Android Handler 线程消息机制
  8. 一个简单的Android进程管理器(初稿)
  9. Android串口通信:抱歉,学会它真的可以为所欲为

随机推荐

  1. Android(安卓)UI—仿微信底部导航栏布局
  2. 67-Flutter中高德地图插件的使用
  3. Macaca安装配置流程
  4. [Android学UI之三]实现新浪微博消息页面
  5. Android开发之如何在App间安全地共享文件
  6. Android(安卓)ExpandableListView简单使
  7. android 自定义View绘制电池电量(电池内带
  8. android代码中打开系统设置界面 .
  9. Android(安卓)学习笔记之界面布局
  10. Android第四讲——常用的基本控件(三)Toa