原文地址:http://blog.csdn.net/maxleng/article/details/5490713
基本空间划分
Google 给了我们一张系统架构图,在这张图上我们可以看到 Android 的大体框架组成。
从上图可以看到:Android Applications,Application Framework,Dalvik Virtual Machine,Linux 。 如果将Android 泛化,我们可以将系统划分成两部分:
但是为了研究的方便我们先看最为本质的三层,上面是 Android ,中间叫 Dalvik 虚拟机,下面叫 Linux 。
虽然上两层都包含在 Android 中,但是为了理解的方便或者从实用主义出发,我还是将虚拟机这次给分开出来,因为我研究的对象是 Android 的手机系统相关部分,对于虚拟机我们不做太深入的研究。
从上面我们可以看到这个系统静态的划分成这样的三层。但是从动态运行逻辑上不是这样划分的,所以空间的划分是一个有趣的概念。 我们从操作系统的角度看, Android 就是一堆 Linux 应用的集合。从 Linux 角度看到的空间划分:进程空间和内核空间。从 Android 的应用对应着 Linux 的一个个进程。
Andoid 中包含一个 Java 虚拟机 ,虚拟机是运行在Linux 之上的, Android 构建在 JVM 之上, 从 Android 动态 运行逻辑上我们需要将 Android 划分成 Android 空间和非 Android 空间。 在 Andoid 系统中我们面对的是 Andoid 概念空间,而不是 Linux 进程了,在 Andoid 概念空间中已经没有了 Lliux 进程的概念 ,而是 Service , proxy , Activity , provider 等。
至于虚拟机 JVM ,我们只需要知道 JVM 是 Dalvik VM (虚拟机)这是一个专为嵌入式设备打造的JAVA虚拟机,是一个有着自己的 code-byte 和格式的可以在嵌入式设备上高效运行的 Java 虚拟机。
为了研究的深入,我们还是需要涉及到 JNI Native 部分。在这个分类中我将 JVM 分为 JVM 空间和 C++ 空间。
Android 应用的开发者是工作在 Android 外特性概念空间的,这里没有了 Linux 的一点气息, Android 构建的外特性空间概念包含了: Activity,Provider,Interface,Events,Provider , Service 等。至于 JVM 空间和 C++ 空间的划分是为了研究 Android 核心的描述而提出的,我们在做 Android 系统开发时,常常需要修改到 JNI 的 Native 部分。后面我将用较多的篇幅来深入阐述这个部分。