Android系统是一款基于Linux的开源系统,系统的架构划分为:系统应用层、Java API Framework层、native C/C++库和Android 运行时、硬件抽象层、和Linux内核层。
各层级之间的衔接关系可以以进程的视角来理解。如下图,
-
当按下手机的开机键,会引导芯片从固化在ROM里的预设代码开始执行,加载引导程序到RAM
-
然后启动Android系统的引导程序Boot Loader
引导程序的主要作用是:1 检测外部的RAM;2 引导程序设置网络、内存等。 -
进入内核层
①启动swapper进程(pid = 0,又叫idle进程,是系统初始化过程中开创的第一个进程),用于初始化进程管理、内存管理,加载Display,Camer Driver,Binder Driver等工作。
②启动kthreadd进程(pid = 2),是Liunx系统的内核进程,会创建内核工作线程kworkder,是所有内核进程的鼻祖
pid:是进程号 -
当kernel启动过程中会创建init进程(pid = 1),init进程是用户空间的第一个进程。
-
init进程会启动Zygote进程、serviceManager。Zygote进程是所有app的父进程
-
接着Zygote进程fork出systemserver进程以及各种app进程。
图片参考自 http://gityuan.com/images/android-arch/android-boot.jpg