如何快速了解Android系统内核


分析Android平台系统架构,通过对最新Android源代码的解析,将其与标准Linux内核源码比较,详细解析Android内核的功能更新 , 讨论Android 内核与标准Linux内核之间的不同以及Android在移动平台的优势,并对Android在各种内核之间做出一个定位,介绍了Ubuntu环境下Android内核的获取与编译 。

1、概述

随着嵌入式技术的飞速发展,移动智能平台的运行速度和所集成的功能获得了极大提升 。藉此,由Google主导的开放手机联盟OHA顺势在2008年推出了Android移动终端平台 。Android是一个开放、自由的移动终端平台[1],它的发布,打破了诺基亚 Symbian操作系统操作系统在传统智能手机平台上的垄断地位,同 时,其平台化的优势也大大丰富各种手持式设备软件的功能 。
2、Android 系统架构

Android是 Google开发的基于Linux平台的开源手机操作系统,它是一 个移动终端平台,包括了移动电话工作所需的全部软件,由操作系统、中间件、 UI 及应用程序组成 。

Android系统架构自底向上由以下4个层次组成[2]:基于Linux的内核模 块、运行时库与其他库、应用程序框架、应用程序 。

第一层:Linux 操作系统和Android系统扩展,由C语言实现 。

第二层:系统库层与Android运行时环境 , 由C/C实现 。

第三层:Android应用程序框架隐藏在每个应用后面的是一系列服务和统 。

第四层:Android应用程序

Android 应用程序层由运行在Android设备上的所有应用共同构成,它不仅 包括通话、短信、联系人等系统应用,还包括其他后续安装到设备中的第三方应用 。3、Android 内核分析

2.1 内核在操作系统中的地位

Android基于Linux操作系统 , 由硬件、系统内核、系统服务和应用程序等 四大部分组成 。其中,内核是最核心的部分,其主要作用在于与计算机硬件进 行交互,实现对硬件的编程控制和接口操作,调度访问硬件资源,同时向应用 程序提供一个高级的执行环境和对硬件的虚拟接口 。主要功能包括:中断服务 程序、进程调度程序、进程地址空间的内存管理、进程间通信 。

2.2 Android内核

为了对比分析Android内核,在Ubuntu操作系统上搭建了Android内核 的编译开发平台,通过repo,下载最新的Android内核代码版本Jelly Bean 。

经过与标准Linux内核源代码进行详细对比 , 可以发现,Android内核与标 准Linux内核在文件系统、进程间通信机制、内存管理等方面存在不同 。

 ?。?)文件系统

Android内核中增加了标准Linux内核中没有采纳的YAFFS2文件系统 。

 ?。?)进程间通信机制

Binder是一种进程间通信机制,其实是提供远程过程调用(RPC)功能 。在

Android系统的Binder机制中,由一系统组件组成 , 分别是 Client、Server、Service Manager和Binder驱动程序,其中 Client、Server 和 Service Manager 运行在用户空间 , Binder驱动程序运行内核空间 。

 ?。?)内存管理

在内存管理模块,Android内核采用了一种不用于标准 Linux内核的低内

存管理策略 。Android系统采用的则是一种叫作LMK(Low Memory Killer)的 机制,这种机制将进程按照重要性进行分级、分组 。内存不足时,将处于最低级别组的进程关闭 。

4、Android 内核获取与编译

下面以Ubuntu 13.04操作系统为例 , 讲解在 Ubuntu 13.04系统下如何搭建

Android内核编译开发平台 。在Ubuntu上搭建Android内核编译环境,具体步 骤如下:

 ?。?)准备系统环境 , 需要的软件包列表 flex,bison,gperf,libsdl-dev, libesd0-

dev , libwxgtk2.6-dev(optional),build-essential , zip,curl;(2)安装JDK的 1.7 版本;(3)安装 repo;(4)在主文件目录建立一个bin文件夹并加入到环境变量当中;(5)下载repo脚本 , 将它的属性改为可执行curl http://android.git.kernel.org/repo> ~/bin/repo chmod a x~/bin/repo;(6)创建一个保存源码的目录 mkdir coredroid cd coredroid(7)获取Android内核代码:git clone git://android.git.kernel.org/kernel/co mmon.git

经过以上步骤,最新版本Android内核就被下载到文件夹 coredroid当中 。make 编译完成后生成 zImage文件, 可用模拟器测试运行cd mydroid/out/cupcake/out/target/product/genericemulator -image system.img -data userdata.img -ramdisk ramdisk.img -kernel~/coredroid/common /arch/arm/boot/zIma ge

5、结语

Android 内核由标准Linux内核优化得来,其继承了Linux 内核的各种优点 , 保留了标准Linux内核的主体架构 。同时,Android 按照移动平台的需求,在文件系统、内存管理、进程间通信机制、电源管理等方面进行了修改,添加相关的驱动程序及必要的新功能,但是与大多数精简的嵌入式 Linux操作系统相比,Android很大程度上保留了标准Linux的基本架构,因此 , Android系统应用范 围更加广泛,拓展性更强 。


【如何快速了解Android系统内核】

经验总结扩展阅读