zoukankan      html  css  js  c++  java
  • Android 系统内核层与 Linux Kernel 的比较

    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版

  • 相关阅读:
    Spring4整合Hibernate5时不能自动生成表结构
    Unmapped Spring configuration files found.
    org.springframework.beans.factory.UnsatisfiedDependencyException
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server
    could not find class that it depends on; nested exception is java.lang.NoClassDefFoundError: org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException
    [Java] JVM 在执行 main 方法前的行为
    [Java] JavaMail 查询邮件
    [Java] JavaMail 发送 html 格式、带附件的邮件
    [Java] JavaMail 简单案例
    [工作] 使在家办公(Work From Home)更有效率的建议
  • 原文地址:https://www.cnblogs.com/renzimu/p/4793939.html
Copyright © 2011-2022 走看看