Android 系统内核层与 Linux Kernel 的比较
2015-09-09 10:39
295 查看
Android 内核具有和标准 Linux 内核一样的功能,主要实现了内存管理、进程调度、进程间通信等功能。但在文件系统、进程间通信、内存管理等方面存在差异。
1、文件系统。移动设备采用的大多不是硬盘而是 Flash 作为存储介质,因此,Android 内核中增加了标准 Linux 专用于 Flash 的文件系统 YAFFS2(Yet Another Flash File System 2)。YAFFS2 是基于 NAND flash 日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外断电对文件系统一致性和完整性的影响。YAFFS2 性能比支持 NOR 型闪存的 JFFS2(Journalling Flash File System Version 2, 闪存日志型文件系统第2版)文件系统更加优秀。
2、进程间通信机制。Android 增加了一种进程间的通信机制 IPC Binder。Binder 通过守护进程 Service Manager 管理系统中的服务,负责进程间的数据交换。各进程通过 Binder 访问同一块共享内存,以达到数据通信的机制。从应用层的角度看,进程通过访问数据守护进程获取用于数据交换的程序框架接口,调用并通过接口共享数据,而其他进程要访问数据,也只需与程序框架接口进行交互,方便了程序员开发需要交互数据的应用程序。
3、内存管理。Android 内核采用了一种不同于标准 Linux 内核的低内存管理策略。Android 系统采用的是 LMK(Low Memory Killer) 机制,这种机制将进程按照重要性进行分级、分组,内存不足时,将处于最低级别组的进程关闭,保证系统是稳定运行的。同时,Android 新增加了一种内存共享的处理方式 Ashmem(Anonymous Shared Memory,匿名共享内存)。通过 Ashmem,进程间可以匿名自由共享具名的内存块,这种共享方式在标准 Linux 当中也是不被支持的。
在系统类库层(Libraries)的 Surface Manage 模块负责管理显示与存储之间的互动,以及对 2D 绘图和 3D 绘图进行显示上的合成。Android 中的图形系统实际上采用的是C/S 结构,Client 端就是应用程序,而 Service 端是 Surface Flinger,Client 通过 Binder 向 Server 端的 Surface Flinger 传输图像数据,最终由 Surface Flinger 合成到Frame Buffer 中,然后再屏幕上显示出来。
4、电源管理。不同于标准 Linux 内核,Android 采用的是一种较为简单的电源管理策略,通过开关屏幕、开关屏幕背光、开关键盘背光、开关按钮背光和调整屏幕亮度来实现电源管理,并没有实现休眠和待机功能。目前通过三种途径来判断电源管理策略:RPC 调用、电池状态改变和电源设置。系统通过广播 Intent 或直接调用 API 的方式来与其他模块进行联系。电源管理策略同时还有自动关机机制,当电力低于最低可接受程度时,系统将自动关机。另外,Android 的电源管理模块还会根据用户行为自动调整屏幕亮度。
5、驱动及其他。相对于标准内核,Android 内核还添加了字符输出设备、图像显示设备、键盘输入设备、RTC 设备、USB Device 设备等相关设备驱动,增加了日志系统,使应用程序可以访问日志消息,使开发人员获得更大的自由。
【参考文献】
《Android 和 PHP 开发最佳实践》 第2版
1、文件系统。移动设备采用的大多不是硬盘而是 Flash 作为存储介质,因此,Android 内核中增加了标准 Linux 专用于 Flash 的文件系统 YAFFS2(Yet Another Flash File System 2)。YAFFS2 是基于 NAND flash 日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外断电对文件系统一致性和完整性的影响。YAFFS2 性能比支持 NOR 型闪存的 JFFS2(Journalling Flash File System Version 2, 闪存日志型文件系统第2版)文件系统更加优秀。
2、进程间通信机制。Android 增加了一种进程间的通信机制 IPC Binder。Binder 通过守护进程 Service Manager 管理系统中的服务,负责进程间的数据交换。各进程通过 Binder 访问同一块共享内存,以达到数据通信的机制。从应用层的角度看,进程通过访问数据守护进程获取用于数据交换的程序框架接口,调用并通过接口共享数据,而其他进程要访问数据,也只需与程序框架接口进行交互,方便了程序员开发需要交互数据的应用程序。
3、内存管理。Android 内核采用了一种不同于标准 Linux 内核的低内存管理策略。Android 系统采用的是 LMK(Low Memory Killer) 机制,这种机制将进程按照重要性进行分级、分组,内存不足时,将处于最低级别组的进程关闭,保证系统是稳定运行的。同时,Android 新增加了一种内存共享的处理方式 Ashmem(Anonymous Shared Memory,匿名共享内存)。通过 Ashmem,进程间可以匿名自由共享具名的内存块,这种共享方式在标准 Linux 当中也是不被支持的。
在系统类库层(Libraries)的 Surface Manage 模块负责管理显示与存储之间的互动,以及对 2D 绘图和 3D 绘图进行显示上的合成。Android 中的图形系统实际上采用的是C/S 结构,Client 端就是应用程序,而 Service 端是 Surface Flinger,Client 通过 Binder 向 Server 端的 Surface Flinger 传输图像数据,最终由 Surface Flinger 合成到Frame Buffer 中,然后再屏幕上显示出来。
4、电源管理。不同于标准 Linux 内核,Android 采用的是一种较为简单的电源管理策略,通过开关屏幕、开关屏幕背光、开关键盘背光、开关按钮背光和调整屏幕亮度来实现电源管理,并没有实现休眠和待机功能。目前通过三种途径来判断电源管理策略:RPC 调用、电池状态改变和电源设置。系统通过广播 Intent 或直接调用 API 的方式来与其他模块进行联系。电源管理策略同时还有自动关机机制,当电力低于最低可接受程度时,系统将自动关机。另外,Android 的电源管理模块还会根据用户行为自动调整屏幕亮度。
5、驱动及其他。相对于标准内核,Android 内核还添加了字符输出设备、图像显示设备、键盘输入设备、RTC 设备、USB Device 设备等相关设备驱动,增加了日志系统,使应用程序可以访问日志消息,使开发人员获得更大的自由。
【参考文献】
《Android 和 PHP 开发最佳实践》 第2版
相关文章推荐
- Linux系统作为客户端时的一些代理设置
- linux下文件内容多出^M的解决方法
- linux库链接问题-找不到库
- linux sync
- linux du df命令清除不要的大文件
- 查看linux操作系统位数命令
- WordPress 3.9 Released – Install Using LAMP or LEMP on RHEL, CentOS & Fedora
- Linux 大页面使用与实现简介
- linux文件权限问题
- 一步完成linux安装jdk
- 一步完成linux安装jdk
- Linux战地日记——comm命令和diff命令
- Linux 网卡高级管理
- linux调度器(十)——调度器/proc信息解读
- linux调度器(九)——调度器的配置参数
- linux调度器(八)——实时调度与SMP
- linux调度器(七)——other cfs class api and functions
- linux调度器(六)——应用层理解CFS及组调度
- linux调度器(五)——进程管理与CFS
- linux调度器(四)——主调度器与CFS