Android内核分析_陈璟

上传人:油条 文档编号:1684190 上传时间:2017-07-05 格式:PDF 页数:4 大小:276.86KB
返回 下载 相关 举报
Android内核分析_陈璟_第1页
第1页 / 共4页
Android内核分析_陈璟_第2页
第2页 / 共4页
Android内核分析_陈璟_第3页
第3页 / 共4页
Android内核分析_陈璟_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《Android内核分析_陈璟》由会员分享,可在线阅读,更多相关《Android内核分析_陈璟(4页珍藏版)》请在金锄头文库上搜索。

1、M O D E R N C OM P U T E R 2009.11现代计算机(总第三一九期)实 践 与 经 验Android内核分析陈 璟 , 陈平华 , 李文亮(广东工业大学计算机学院 , 广州 510006)摘 要 :关键词 : Android; 内核 ; 编译收稿日期 :2009-10-09 修稿日期 :2009-11-01作者简介 :陈璟 (1984-),男 ,硕士研究生 ,研究方向为嵌入式系统介绍 Android 移动平台系统架构 ,通过对 Android 源代码的分析 ,将其与标准 Linux 内核(2.6.27)源代码相比较 ,详细解析 Android 内核的功能更新 ,分析讨

2、论 Android 内核与标准 Linux 内核之间的不同以及 Android 在移动平台上的优势 , 并对 Android 在各种内核之间做出一个定位 ,介绍 Ubuntu 环境下 Android 内核的获得与编译 。0 引 言随着嵌入式技术的发展 , 智能手机的运行速度和所集成的功能获得了极大提升 。 借着这股东风 ,Google主导的开放手机联盟 OHA (Open Handset Alliance)顺势在 2008 年推出了 Android 移动终端平台 。 Android是一个开放 、自由的移动终端平台1,它的发布 ,打破了诺基亚 Symbian 操作系统和微软 Windows Mo

3、bile 操作系统在智能手机平台上的垄断地位 , 同时 , 其平台化的优势也大大丰富各种手持式设备软件的功能 。1 Android 系统架构Android 是 Google 开发的基于 Linux 平台的开源手机操作系统 ,它是一个移动终端平台 ,包括了移动电话工作所需的全部软件 ,由操作系统 、中间件 、UI(UserInterface)及应用程序组成 。 开发人员使用 Java 语言 ,开发运行于 Dalvik 虚拟机上的应用程序 ,其运行效率比一般嵌入式 Linux 操作系统上的 J2ME 程序高 。Android 系统架构自底向上由以下 4 个层次组成2:基于 Linux 的内核模块

4、、运行时库与其他库 、应用程序框架 、应用程序 。(1)基于 Linux 的内核模块Android 内核基于 Linux 2.6, 提供安全 、 内存管理 、进程管理 、网络组 、驱动模型等核心服务 。 同所有Linux 内核一样 ,Android 内核是介于硬件层和软件组之间的一个抽象层次 。(2)运行时库与各种程序库运行时库实质是一款 Java 重新设计的虚拟机Dalvik, 它包含 J2SE 所提供的绝大部分功能 。 每个Android 应用都运行在自己的进程上 , Dalvik 虚拟机为它分配自有的实例 。 Dalvik 使一台设备能运行多个虚拟机程序但消耗较少的资源 。 在 Andr

5、oid 中 ,编译器将 Java 源文件转为 class 文件 ,内置的 dx 工具又将class 文件转化为 Dex 文件 ,Dex 文件是在 Dalvik 虚拟机上运行程序的标准格式 。各种程序库3:包含一套 C/C+库 ,Android 的各式组件都可使用 。这些功能通过组件间接提供给开发者 。 这些库包括图形框架 、 媒体功能库 、Webkit、及SQLite 数据库 ,等等 。(3)应用程序框架 :提供应用程序开发所需要的各种 API。 在开发过程中 ,开发人员通过充分使用应用框架提供的 API,对各种组件 、服务进行重用 ,从而开发出精简 、高效的应用程序 。 主要包括以下几种核心

6、组件 :UI 组件 :包括 List、Layout、Textbox、Utton、Check-box 等 ,用以构建应用程序与用户的交互界面 。内容提供器 (Content Provider):实现标准的方法接口 ,让其他应用保存或读取其提供的数据 ,例如外部程序通过 Content Provider 访问联系人数据 。资源管理器 (Resource Manager):管理对非代码的访问 ,例如本地图像 、布局文件 、本地化字符串等 。消息管理器 (Notification Manager):让程序将警示信息显示在状态栏上 ,例如平台接收到短信息 、电子邮件 、未接电话时在状态栏上的提示 。Ac

7、tivity 管理器 (Activity Manager):用来管理应用貋貗貣现代计算机(总第三一九期)M O D E R N C OM P U T E R 200911实 践 与 经 验程序生命周期并提供常用的导航回退功能2。(4)应用程序 :Android 预装了一系列由 Java 语言编写成的核心应用程序 ,包括短信服务 、电话 、Email客户端 、浏览器 、Google 地图等 。2 Android 内核分析2.1 内 核 在 操 作 系 统 中 的 地 位Android 基于 Linux 操作系统 , 由硬件 、 系统内核 、系统服务和应用程序等四大部分4组成 。 其中 ,内核 (

8、Kernel)是最核心的部分 ,其主要作用在于与计算机硬件进行交互 , 实现对硬件的编程控制和接口操作 ,调度访问硬件资源 ,同时向应用程序提供一个高级的执行环境和对硬件的虚拟接口4。主要功能包括 :中断服务程序 、进程调度程序 、进程地址空间的内存管理 、进程间通信5。内核与普通应用程序不同 , 其拥有所有硬件设备的访问权限以及启动时即划分的受保护的内存空间6。2.2 Android 内 核和标准的 Linux 内核一样 ,Android 内核主要实现内存管理 、进程调度 、进程间通信等功能 。Android 内核是在标准 Linux 内核的基础上修改而成 。为了适应嵌入式硬件环境和移动应用

9、程序的开发 ,Android 对标准 Linux 内核进行了一定的修改 。 为了对比分析 Android 内核 ,在 Ubuntu 操作系统上搭建了 Android 内核的编译开发平台 ,通过 repo,下载最新的 Android 内核代码版本 cupcake(其中 Linux 内核版本为 2.6.27)。 从获得的内核源码树的根目录结构看 ,Android 内核源码与标准 Linux 内核并无不同 。Android 内核源码树根目录结构如表 1 所示 。表 1 内核源码树目录结构经过与标准 Linux 内核源代码进行详细对比 ,可以发现 ,Android 内核与标准 Linux 内核在文件系

10、统 、进程间通信机制 、内存管理等方面存在不同 。文件系统不同于桌面系统与服务器 , 移动设备大多采用的不是硬盘而是采用 Flash 作为存储介质 ,因此 ,Android内核中增加了标准 Linux 内核中没有采纳的 YAFFS2文件系统 。 YAFFS2 (Yet Another Flash File Sy-stem,2nd edition) 是专用于 Flash 的文件系统 , 对 NAND-Flash 芯片有着良好的支持 。 YAFFS2 是日志结构的文件系统 ,提供了损耗平衡和掉电保护 ,可以有效地避免意外断电对文件系统一致性和完整性的影响 。 YAFFS2按层次结构设计 , 分为文

11、件管理接口 、 内部实现层和NAND,简化了其本身与系统的接口设计 ,能更方便地集成到系统当中 。 经过测试证明 ,YAFFS2 性能比支持NOR 型闪存的 JFFS2 文件系统优秀7。进程间通信机制Android 增加了一种进程间的通信机制 IPC Bin-der, 在内核源代码中 , 驱动程序文件为 coredroid/include/linux/binder.h 和 coredroid/drivers/android/binder.c。Binder 通过守护进程 Service Manager 管理系统中的服务 ,负责进程间的数据交换 。 各进程通过 Binder 访问同一块共享内存 ,

12、以达到数据通信的机制 。从应用层的角度看 , 进程通过访问数据守护进程获取用于数据交换的程序框架接口 ,调用并通过接口共享数据 ,而其他进程要访问数据 ,也只需与程序框架接口进行交互 ,方便了程序员开发需要交互数据的应用程序 。内存管理在内存管理模块 ,Android 内核采用了一种不用于标准 Linux 内核的低内存管理策略 。 在标准 Linux内核当中 ,使用一种叫做 OOM(Out of Memory)的低内存管理策略 ;当内存不足时 ,系统检查所有的进程 ,并对进程进行限制评分 , 获得最高分的进程将被关闭(内核进程除外 )。 Android 系统采用的则是一种叫作LMK(Low M

13、emory Killer)的机制 ,这种机制将进程按照重要性进行分级 、分组 。内存不足时 ,将处于最低级别组的进程关闭 。 例如 ,在移动设备当中 ,UI 界面处于最高级别 ,所以该进程永远不会被中止 ,这样 ,在终端用户看来 ,系统是稳定运行的 。 在 Andorid 内核源码 中 ,LMK 的 位 置 是 coredroid/drivers/misc/lowme -morykiller.c。与此同时 ,Android 新增加了一种内存共享的处理方式 Ashmem(Anonymous Shared Memory,匿名共享内存 )。通过 Ashmem,进程间可以匿名自由共享具名的内存块 ,这

14、种共享方式在标准 Linux 当中不被支持 。Ashmem 分配和使用情况如下8:貋貗貤M O D E R N C OM P U T E R 2009.11现代计算机(总第三一九期)实 践 与 经 验fd = ashmem_create_region(my_shm_region, size);if(fd /bin/repo chmoda+x /bin/repo;创建一个保存源码的目录mkdir coredroidcd coredroid获取 Android 内核代码 :git clone git:/android.git.kernel.org/kernel/common.git经过以上步骤 ,

15、最新版本 Android 内核就被下载到文件夹 coredroid 当中 。cd cordroidmake xconfig(配置可按 doucument 文件夹下的 android.txt 说明配置 )make编译完成后生成 zImage 文件 , 可用模拟器测试运行cd mydroid/out/cupcake/out/target/product/genericemulator -image system.img -data userdata.img -ramdiskramdisk.img -kernel /coredroid/common /arch/arm/boot/zImage4 结

16、语经过分析 ,Android 内核由标准 Linux 内核修改而来 ,因此继承了 Linux 内核的各种优点 ,保留了标准 Linux 内核的主体架构 。 同时 ,Android 按照移动设备的需求 ,在文件系统 、内存管理 、进程间通信机制 、电源管理等方面进行了修改 ,添加相关的驱动程序和一些必要的新功能 ,但是与大多数精简的嵌入式 Lin-ux 操作系统 (例如 uCLinux)相比 ,Android 很大程度上保留了标准 Linux 的基本架构 ,因此 ,Android 系统应用范围更加广泛 ,拓展性更强 。参考文献1田森 ,李大和 . 用 Android 开发手机应用 J. 程序员 ,2008,(1):2527G1G2G3G4 G1G2G5G1G2G6G7G8G9GAG7G8G9GAG5GBGCG7G8G9GAGDGEGFG10GBGC貋貗貥现代计算机(总第三一九期)M O D E R N C OM P U T E R 200911实 践 与 经 验Research

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号