Android基于Linux操作系统,由硬件、系统内核、系统服务和应用程序4部分组成。其中内核是最核心的部分,与普通应用程序不同,内核拥有所有硬件设备的访问权限以及启动时划分受保护的内存空间,主要实现内存管理、进程调度、进程间通信等功能。Android内核是在标准的Linux内核的基础上修改而成的。为了适应嵌入式硬件环境和移动应用程序的开发,Android对标准Linux内核进行了一定的修改。
1.文件系统
由于移动设备大多采用Flash作为存储介质,因此Android内核中增加了专门用于Flash的文件系统——YAFFS2文件系统,对NAND Flash芯片有良好的支持。YAFFS2按层次结构设计,分为文件管理接口、内部实现层和NAND。简化的系统接口设计使得该文件系统集成更为方便。经过测试证明,YAFFS2性能比支持NOR型闪存的JFFS2文件系统更优秀。
2.进程间通信机制
Android提供进程间的通信机制IPC Binder,在内核代码中Binder通过守护进程Service Manager管理系统中的服务,负责进程间的数据交换。各进程通过Binder访问同一块共享内存。从应用层的角度看,进程通过访问数据的守护进程获取程序框架接口,实现数据访问、数据交换、数据共享等操作。
3.内存管理
Android内核采用一种叫作LMK(Low Memory Killer)的低内存管理策略。这种管理机制将进程按照重要性进行分级、分组。内存不足时,将处于最低级别的进程关闭,而使处于较高级别的进程保持运行。例如,在移动设备中,UI界面处于最高级别,所以该进程永远不会被中止,这种方式使得终端用户认为系统是稳定运行的。同时,Android增加了一种内存共享的处理方式Ashmem(AnonymousShared Memory,匿名共享内存)。通过Ashmem,进程间可以匿名自由共享同名的内存块。
4.电源管理
由于Android主要用于移动设备,电源管理就显得尤为重要。目前采用的是一种较为简单的电源管理策略,通过开关屏幕、开关屏幕背光、开关键盘背光、开关按钮背光和调整屏幕亮度来实现电源管理,并没有实现休眠和待机功能。有3种途径判断、调整电源管理策略:RPC调用、电池状态改变和电源设置。通过广播Intent或直接调用API的方式来与其他模块进行联系。电源管理策略同时还有自动关机机制,当电力低于最低可接受程度时,系统将自动关机。Android的电源管理模块还会根据用户行为自动调整屏幕亮度。
5.其他
Android内核添加了字符输出设备、图像显示设备、键盘输入设备、RTC设备、USB设备等相关设备驱动,增加了Logger系统。
转载:
《安卓底层开发实战》-周国庆老师的书
网友评论