Google变更了75个文件并增加了88个文件。我们准备了一个带注释的变更文件清单,附于文章末尾;在这里有一个简单总结。
Goldfish-44个文件
Android模拟器运行一个虚拟的CPU,Google叫这个CPU为Goldfish。Goldfish执行ARM926T的指令,并且有用于输入和输出的钩子,好比模拟器上的读取键和播放视频的输出键。
这些接口在定义Goldfish模拟器的文件中实现,并且不会被汇编到在真实设备上运行的Kernel中。所以我们可以放心的忽略这些文件。
YAFFS2-35个文件
与PC在磁盘上存储文件不同,手机在固态闪存芯片上存储文件。HTC G1用的是NAND闪存,一种因其高品质低价格而变得越来越流行的闪存。
YAFFS2是“Yet Another Flash File System, 2nd edition(另一个闪存系统文件,第二版)的缩写,为Linux Kernel和NAND闪存设备提供高性能接口。YAFFS2对Linux早就免费开放。然而,它不是标准2.6.25 Linux Kernel的一部分,所以Google将它添加到Android上。
蓝牙-10个文件
Google在蓝牙通讯协议栈中对10个文件进行了修改。修改的结果修正了与蓝牙耳机关联的6个明显错误,同时添加了蓝牙调试和访问控制功能。
调度-5个文件
Android Kernel同时包含了对CPU进程调度和时间维持算法的略微修改。我们还不知道关于这些修改的历史,但是其影响在粗略检查下并不明显。
新Android功能-28个文件
除了改错和其他一些小变动外,Android涵盖了一系列新的子系统值得一提,包括下列:
IPC Binder
IPC Binder是一个进程间通信机制。它允许程序通过一套高端API设置向其他程序提供服务,而不是通过标准Linux。网络搜索显示Binder概念始于Be公司,在Google为Android编写新Binder之前已经在Palm软件中实现了。
低内存杀手
Android增加了一个低内存杀手,每次使用这个功能,扫描正在运行的程序,然后杀掉一个。在我们的粗略测试中不能清楚的显示为什么Android在标准Linux Kernel已有的低内存杀手之上又增加了一个。
Ashmem
Ashmem是一个匿名共享内存(Anonymous SHared MEMory)系统,该系统增加了接口因此进程间可以共享具名内存块。举一个例子,系统可以利用Ashmem存储图标,当绘制用户界面的时候多个进程也可 以访问。Ashmem优于传统Linux共享内存表现在当共享内存块不再被用的时候,它为Kernel提供一种回收这些共享内存块的手段。如果一个程序尝 试访问Kernel释放的一个共享内存块,它将会收到一个错误提示,然后重新分配内存并重载数据。
内存控制台和日志装置
Android为调试错误增加了将Kernel记录信息储存到内存缓冲上的功能。另外,Android还增加了单独日志模块,这样用户进程就可以读写用户日志信息了。
Android调试桥
调试嵌入式设备可以说是个挑战。Google创造了Android调试桥(简称ADB)来简化调试,该调试通过一个USB连接运行Android的硬件设备和开发者用于编写应用程序的台式电脑之间。
Android同时增加了一个新的实时时钟、一个交换支持和一个计时的GPIO支持。我们在文章结尾列举了影响这些新模块的文件。
电源管理-5个文件
电源管理是一个好的移动设备中最难处理的问题之一,因此我们将其单独分成一组。有趣的是Google给Linux增加了一个新的电源管理系统,而不是利用现有的。我们在文章结尾列举了受影响的文件。
其他改变-36个文件
除了上边列举的例子之外,我们还发现一系列“各式各样”得改变。和其他的改变相比,这些改变包括了额外调试支持、键盘灯控制和TCP网络管理。
网络过滤器-0个文件
最后,我们的变更文件列表显示网络过滤器有22个被改变的文件。然而,测试显示只有文件名称得大小写不同(xt_DSCP.c对应xc_dscp.c),文件内容完全一致。因此在本文中我们将这些文件忽略不计。