0

0

分析Android内核与标准Linux内核的功能更新

王林

王林

发布时间:2024-05-23 21:19:01

|

752人浏览过

|

来源于ITcool

转载

Android系统内核剖析

[摘要]剖析android平台系统构架linux 删除文件夹,通过对最新Android源代码的解析,将其与标准Linux内核源码比较,详尽解析Android内核的功能更新,讨论Android内核与标准Linux内核之间的不同以及Android在联通平台的优势,并对Android在各类内核之间作出一个定位,介绍了Ubuntu环境下Android内核的获取与编译。

[关键词]Android;linux;内核;编译

中图分类号:G354.3文献标示码:A文章编号:1009-914X(2013)33-0119-01

1、概述

随着嵌入式技术的急速发展,联通智能平台的运行速率和所集成的功能获得了极大提高。进而,由Google主导的开放手机联盟OHA乘势在2008年推出了Android联通终端平台。Android是一个开放、自由的联通终端平台[1],它的,打破了摩托罗拉Symbian操作系统操作系统在传统智能手机平台上的垄断地位,同时,其平台化的优势也大大丰富各类手持式设备软件的功能。

2、Android系统构架

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

linux内核android_内核管理器_内核稳定

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

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

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

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

第四层:Android应用程序

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

内核管理器_linux内核android_内核稳定

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

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

2.2Android内核

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

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

(1)文件系统

内核稳定_linux内核android_内核管理器

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

(2)进程间通讯机制

Binder是一种进程间通讯机制linux内核android,虽然是提供远程过程调用(RPC)功能。在

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

(3)显存管理

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

存管理策略。Android系统采用的则是一种叫作LMK(LowMemoryKiller)的机制,这些机制将进程根据重要性进行分级、分组。显存不足时,将处于最低级别组的进程关掉。

4、Android内核获取与编译

下边以Ubuntu13.04操作系统为例,讲解在Ubuntu13.04系统下怎样搭建

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

(1)打算系统环境,须要的软件包列表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脚本,将它的属性改为可执行curlhttp:///repo>~/bin/repochmoda+x~/bin/repo;(6)创建一个保存源码的目录mkdircoredroidcdcoredroid(7)获取Android内核代码:gitclonegit:///kernel/common.git

linux内核android_内核管理器_内核稳定

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

5、结语

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

参考文献

[1]CodeHome.Android-AnOpenHandsetAllianceProject.[EB/OL]http:///android/what-is-android.

[2]公磊,周聪.基于Android的联通终端应用程序开发与研[M].人民邮电出版社linux内核android,2007

[3]赵炯.Linux内核完全注释[M].机械工业出版社,2004.

[4]陈莉君.Linux内核的剖析及应用[J].南京邮电大学学报.

相关专题

更多
C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

377

2023.06.20

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

603

2023.07.25

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

348

2023.08.02

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

255

2023.08.09

c语言random函数用法
c语言random函数用法

c语言random函数用法:1、random.random,随机生成(0,1)之间的浮点数;2、random.randint,随机生成在范围之内的整数,两个参数分别表示上限和下限;3、random.randrange,在指定范围内,按指定基数递增的集合中获得一个随机数;4、random.choice,从序列中随机抽选一个数;5、random.shuffle,随机排序。

579

2023.09.05

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

516

2023.09.20

c语言get函数的用法
c语言get函数的用法

get函数是一个用于从输入流中获取字符的函数。可以从键盘、文件或其他输入设备中读取字符,并将其存储在指定的变量中。本文介绍了get函数的用法以及一些相关的注意事项。希望这篇文章能够帮助你更好地理解和使用get函数 。

627

2023.09.20

c数组初始化的方法
c数组初始化的方法

c语言数组初始化的方法有直接赋值法、不完全初始化法、省略数组长度法和二维数组初始化法。详细介绍:1、直接赋值法,这种方法可以直接将数组的值进行初始化;2、不完全初始化法,。这种方法可以在一定程度上节省内存空间;3、省略数组长度法,这种方法可以让编译器自动计算数组的长度;4、二维数组初始化法等等。

595

2023.09.22

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

10

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 5.9万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号