程序猿的自我修养Android大牛聚集之地

Android系统全貌

2016-12-05  本文已影响2698人  小编

转自Gityuan的Android开篇,对自我学习作进一步整理。

Android系统以Linux内核作为基底,上层采用Native层Java层。系统分为内核空间和用户空间,并通过系统调用(Syscall)连通。用户空间主要采用C++和Java代码实现,通过JNI技术连通Java层和Native层(C/C++)。

图片来源 [GITYUAN](http://gityuan.com/android/)

Loader层

Kernel层

Kernel层是指Android内核层,到这里才刚刚开始进入Android系统。

Linux内核加载主要包括初始化kernel核心(内存初始化,打开中断,初始化进程表等)、初始化驱动、启动内核后台(daemons)线程、安装根(root)文件系统等。后续启动第一个用户级进程init(pid=1).

Native层

Native层主要包括启动init进程Android的第一个用户空间进程)、HAL层硬件抽象层)以及开机动画等。init进程是所有用户进程的鼻祖。同时init进程也会孵化一系列用户进程,还会启动关键的服务以及孵化Zygote进程

Framework层

如图,Framework层分为Java FramewordC++ Framework,分别由system_server进程media_server进程负责启动和管理。

Zygote本身是一个Native的应用程序,刚开始的名字为“app_process”,运行过程中,通过系统调用将自己名字改为Zygote。在图中的红色线,便是Zygote fork出来的进程,所有的App进程都是由Zygote fork产生的。

image.png

App层

Syscall && JNI

Andorid的启动过程
Android进程整理

上一篇 下一篇

猜你喜欢

热点阅读