Android 内核具备和标准 Linux 内核同样的功能,主要实现了内存管理、进程调度、进程间通讯等功能。但在文件系统、进程间通讯、内存管理等方面存在差别。程序员
一、文件系统。移动设备采用的大多不是硬盘而是 Flash 做为存储介质,所以,Android 内核中增长了标准 Linux 专用于 Flash 的文件系统 YAFFS2(Yet Another Flash File System 2)。YAFFS2 是基于 NAND flash 日志结构的文件系统,提供了损耗平衡和掉电保护,能够有效地避免意外断电对文件系统一致性和完整性的影响。YAFFS2 性能比支持 NOR 型闪存的 JFFS2(Journalling Flash File System Version 2, 闪存日志型文件系统第2版)文件系统更加优秀。框架
二、进程间通讯机制。Android 增长了一种进程间的通讯机制 IPC Binder。Binder 经过守护进程 Service Manager 管理系统中的服务,负责进程间的数据交换。各进程经过 Binder 访问同一块共享内存,以达到数据通讯的机制。从应用层的角度看,进程经过访问数据守护进程获取用于数据交换的程序框架接口,调用并经过接口共享数据,而其余进程要访问数据,也只需与程序框架接口进行交互,方便了程序员开发须要交互数据的应用程序。性能
三、内存管理。Android 内核采用了一种不一样于标准 Linux 内核的低内存管理策略。Android 系统采用的是 LMK(Low Memory Killer) 机制,这种机制将进程按照重要性进行分级、分组,内存不足时,将处于最低级别组的进程关闭,保证系统是稳定运行的。同时,Android 新增长了一种内存共享的处理方式 Ashmem(Anonymous Shared Memory,匿名共享内存)。经过 Ashmem,进程间能够匿名自由共享具名的内存块,这种共享方式在标准 Linux 当中也是不被支持的。spa
在系统类库层(Libraries)的 Surface Manage 模块负责管理显示与存储之间的互动,以及对 2D 绘图和 3D 绘图进行显示上的合成。Android 中的图形系统实际上采用的是C/S 结构,Client 端就是应用程序,而 Service 端是 Surface Flinger,Client 经过 Binder 向 Server 端的 Surface Flinger 传输图像数据,最终由 Surface Flinger 合成到Frame Buffer 中,而后再屏幕上显示出来。日志
四、电源管理。不一样于标准 Linux 内核,Android 采用的是一种较为简单的电源管理策略,经过开关屏幕、开关屏幕背光、开关键盘背光、开关按钮背光和调整屏幕亮度来实现电源管理,并无实现休眠和待机功能。目前经过三种途径来判断电源管理策略:RPC 调用、电池状态改变和电源设置。系统经过广播 Intent 或直接调用 API 的方式来与其余模块进行联系。电源管理策略同时还有自动关机机制,当电力低于最低可接受程度时,系统将自动关机。另外,Android 的电源管理模块还会根据用户行为自动调整屏幕亮度。接口
五、驱动及其余。相对于标准内核,Android 内核还添加了字符输出设备、图像显示设备、键盘输入设备、RTC 设备、USB Device 设备等相关设备驱动,增长了日志系统,使应用程序能够访问日志消息,使开发人员得到更大的自由。进程
【参考文献】内存
《Android 和 PHP 开发最佳实践》 第2版开发