Android框架结构了解

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消息机制用于同进程的线程间通信。

你可能感兴趣的:(Android框架结构了解)