在 Android 构架中,可以很明显的看到,底层的 Linux 内核则采用的
是 C 语言,libraries 采用 C 或者 C++,但是应用程序层、应用程序框架层
和运行时环境中的 Android 核心库采用 Java 语言编写,也就是说 Android
虽然底层用的是 C 或者 C++但是应用程序的开发则用的是 Java。Google 采
用这样的模式可能是因为相对于 C 或者 C++,Java 的开发周期更短的缘故,
这样的话就能在短时间内为 Android 提供大量的应用软件。我们知道,作
为一个智能手机平台,只有拥有了大量的源源不断的应用程序作为支持,
才能受人们的欢迎,从而才能占领市场。之前 Nokia 的 s60 第三版就是一
个很好的例子,因此 Nokia S60v3 的系统才被世人所熟知,并且曾经在智能
手机行业占有很大的市场。而另一个例子就是 Linux 系统,在所有操作系
统中,稳定性和性能上能够和 Linux 抗衡的系统不多吧,但是在智能手机
市场上为什么 Linux 却可以说是一败涂地,其原因也和其第三方应用少是
脱不了关系的。
2.1.2 内核层
Google Android 作为一个开源的操作系统其内核采用了同样开源的被
业界认为是相当稳定的 Linux 作为其内核,其中 Linux 内核包括以下功能
模 块 : 安 全 (Security) 、 存 储 器 管 理 (Memory Management) 、 进 程 管 理
(Process Management)、网络堆栈(Network Stack)、驱动程序模型(Driver
Model) 等 , 另 外 也 在 给 其 上 层 的 软 件 和 下 层 硬 件 间 建 立 起 一 个 抽 象 层
(Abstraction Layer)。同时 Android 在 Linux 2.6 的内核上进行了一些增
加和删改,使 Linux 更加适应 ARM 平台。
⑴增加了一个基于 ARM 构架的 GoldFish 平台作为虚拟机的虚拟 CPU。
⑵增加了 YAFFS2 FLASH 系统文件,因此增加了对 NANDFLASH 支持。
⑶增加了 Android 相关的驱动。例如 Android 的 IPC(进程间通信机制)
binder,使用这个能使运行的进程为其他进程提供服务;Android 的日志系
统(Logger)和内存控制台(Ram_console);同时 Google 还重写了电源
管理(Power)