Android 系统架构简介
原创...大约 2 分钟
说明:本文基于Android 系统开篇 - Gityuan 博客 | 袁辉辉博客 的学习笔记整理
Android 系统大体分为 4 个模块,从底层开始依次是 1.linux 内核、2.系统库+Android 运行时、3.框架层、4.应用层。
下图描述了 Android 系统从开机到 Apk 运行的整个流程。
流程如下:Loader
-> Kernel
-> Native
-> Framework
-> App
Loader 层
- Boot ROM:开机时,引导芯片从 ROM 读取读取初始化代码,加载引导程序到 RAM 中。
- Boot Loader:是启动 Android 系统之前的引导程序,检查 RAM、初始化硬件参数等。
Kernel 层(即 Android 内核层,进入 Android 系统)
- swapper 进程(pid=0):Boot Loader 启动 swapper(idle)进程,是由内核创建的第一个进程,用来初始化进程管理、内存管理、驱动等等。
- kthreadd 进程(pid=2):是 Linux 系统的内核进程,是所有内核进程的鼻祖。
Syscall,在 Native 和 Kernel 之间的系统调用层。
Native 层
- init 进程(pid=1):由 swapper 进程创建,是所有用户进程鼻祖
- init 进程孵化出用户守护进程、启动 ServiceManager 管理系统服务,启动开机动画 Bootnaim。
JNI,Java 层和 Native(C/C++)层之间。
Framework 层
- Zygote 进程:由 init 进程 fork 生成,是Android 系统第一个 java 进程,是所有 java 进程的父进程
- SystemServer 进程:由 Zygote 进程 fork 而来,是 Zygote 孵化的第一个进程,负责启动和管理整个java framework,如 ActivityManager、PowerManager...
- MediaServer 进程:由 init 进程 fork 而来,负责启动和管理整个C++ framework
APP 层
- Launcher:Zygote 进程孵化的第一个 App 进程,桌面 App。
- 其他由 Zygote 进程孵化的系统进程(Browser、Phone...)和非系统 app 进程。
扼要内容如图:
Android 常用的通信方式
- Binder
- Socket
- Handler
Binder/Socket 用于进程间(都具有独立的地址空间)通信,而 Handler 消息机制用于同进程的线程间(共享内存空间)通信
在 Android 系统中:
- Zygote 进程 --> Socket 机制
- SystemServer、MediaServer、App 之间 --> Binder IPC
- 同一进程不同线程间 --> Handler
文章标题:《Android 系统架构简介》
本文地址: https://jixiaoyong.github.io/blog/posts/e3bb9a54.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 许可协议。转载请注明出处!