八一八android与Linux的关系

Linux与Androld的关系
虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序。下面我们就来分析一下它们之间究竟有什么千丝万缕关系?
1 为什么会选择Linux
成熟的操作系统有很多,比如Unix系统。但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如:
(1)强大的内存管理和进程管理方案
(2)基于权限的安全模式
(3)支持共享库
(4)经过认证的驱动模型
(5)Linux本身就是开源项目
更多关于上述特性的信息可以参考Linux 2.6版内核的官方文档,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux真正的关系。
2Android不是Linu×
看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux内核的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,然后我们将对每一个要点进
行分析,看完后你就会觉得Android不是Linux了。
①它没有本地窗口系统
(1)它没有glibc的支持
 (2)它并不包括一整套标准的Linux使用程序
(3)它增强了Linux以支持其特有的驱动
1、它没有本地窗口系统
什么是本地窗口系统呢?本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OS的Quartz等。不同的操作系统的窗口系统可能不一样,Android并没有使用(也不需要使用)Linux的X窗口系统,这是Android不是Linux的一个基本原因。

2、它没有glibc支持
由于Android最初用于一些便携的移动设备上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。
3、它并不包括一整套标准的Linux使用程序
Android并没有完全照搬Linux系统的内核,除了修正部分Linux的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH文件系统等。
4、Android专有的驱动程序
除了上面这些不同点之外,Android还对Linux设备驱动进行了增强,主要如下所示。
(1) Android Binder基于OpenBinder框架的一个驱动,用于提供Android平台的进程间通信( InterProcess Communication,IPC)功能。源代码位于

drivers/staging/android/binder.c。
(2) Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式设备做了很多优化。源伐码位于:
Ⅰ kerneUpower/earlysuspend.c
Ⅱ kernel/power/consoleearlysuspend.c
Ⅲ kernel/power/fbearlysuspend.c
Ⅳ kemel/power/wakelock.c
Ⅴ kernel/power/userwakelock.c
(3)低内存管理器(Low Memory Killer) 比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程以释放需要的内存。源代码位于

drivers/staging/android/lowmemorykiller.c.
(4)匿名共享内存(Ashmem) 为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。源代码位于mm/ashmem.c。
(5) Android PMEM (Physical) PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。源代码位于drivers/misc/pmem.c。
(6) Android Logger -个轻量级的日志设备,用于抓取Android系统的各种日志。源代码位于drivers/staging/android/logger.c。

(7) Android Alarm捉供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。源代码位于drivers/rtc/alarm.c。
(8) USB Gadget驱动一个基于标准Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的。源代码位于drivers/usb/gadget/。
(9) Android Ram Console为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。源代码位于drivers/staging/android/ramL console.c。
(10) Android timed device提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。源代码位于drivers/staging/android /timed_output.c(timed_gpio.c)。

(11) Yaffs2文件系统Android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2能使用更小的内存来保存其运行状态,因此它占用内存小。Yaffs2的垃圾回收非常简单而且快速,因此能表现出更好的性能。Yaffs2在大容量的NAND Flash上的性能表现尤为突出,非常适合大容量的Flash存储。上面这些要点足以说明Android不是Linux。
在具体学习之前,我们在下节中先来总体浏览一下Android对Linux内核进行了哪些改动,在移植时就需要对这些改动加以调整。

时间: 2024-08-30 17:34:50

八一八android与Linux的关系的相关文章

《Android Studio应用开发实战详解》——第1章,第1.4节Android和Linux的关系

1.4 Android和Linux的关系在了解Linux和Android的关系之前,首先需要明确如下3点. (1)Android采用Linux作为内核. (2)Android对Linux内核做了修改,以适应其在移动设备上的应用. (3)Andorid开始是作为Linux的一个分支,后来由于无法并入Linux的主开发树,曾经被Linux内核组从开发树中删除.2012年5月18日,Linux kernel 3.3发布后来又被加入. 1.4.1 Android继承于LinuxAndroid是在Linu

八一八android开发规范(一种建议)

开发规范重不重要了,不言而喻.这里就给大家说一故事把--据<圣经·旧约·创世记>第11章记载,是当时人类联合起来兴建,希望能通往天堂的高塔.为了阻止人类的计划,上帝让人类说不同的语言,使人类相互之间不能沟通,计划因此失败,人类自此各散东西.此故事试图为世上出现不同语言和种族提供解释.好的开发团队应该是同样的语言,同样的理念,同样的规范去做同一个事情.因此,这里说的开发规范不仅仅在android开发界重要,而且在所有的程序界的重要性也是不言而喻的. 这里说的开发规范分成目录规范,项目和报名的命名

八一八基金圈里的那些神秘情人组合

今天带大家八一八那些不为人知的基金Couple,有图有真相,满足你对基金经理这一高智商高薪职业人群神秘面纱的好奇和窥探心理.1.嘉实杨宇和前富国孟朝霞杨宇是嘉实基金沪深300基金及嘉实一堆指数基金的基金经理,嘉实指数投资部总监, 2012年5月7日 - 15年曾先后担任平安保险投资管理中心基金交易室主任及天同基金管理有限公司投资部总经理.万家(天同)180指数基金经理.2004年7月加入嘉实基金.南开大学经济学硕士,具有基金从业资格,中国国籍.关于杨宇,江湖上流传得最多的是他的国航白金卡的故事,

android linux 环境-android for linux sdk怎么装?

问题描述 android for linux sdk怎么装? eclipse.adt.sdk已下载,adt已安装到eclipse插件,sdk不知到怎么安装了...求指教--- 谢谢各位的不吝赐教,小弟以解决!!!(墙外的空气真好) 解决方案 Android SDK for linux 设置代理64位linux系统无法运行Android sdk的adb和aapt,提示No such file or directory的解决办法android:xlargeScreens=""false&q

摄像头-android与linux之间通过3G网络如何通信

问题描述 android与linux之间通过3G网络如何通信 android连上了ppp网络 linux也连上了ppp网络 我要在Android手机上发送一个命令给 linx服务器,然后linux通过摄像头拍照然后自动发送到我手机上 这个是要怎么去实现,先谢谢 各位大神 解决方案 用一个中间服务器吧,每次更换IP地址都告诉中间服务器 通常来说是需要一个固定IP的东西才好完成通信的操作 可以通信了其他的拍照什么的都是本地的事情了. 解决方案二: http://bbs.csdn.net/topics

c++-请问windows和linux的关系是什么

问题描述 请问windows和linux的关系是什么 请问windows和linux的关系是什么 请问windows和linux的关系是什么 请问windows和linux的关系是什么 解决方案 删除的微信聊天记录怎么恢复?微信聊天记录删除还能恢复吗微信聊天记录删除了怎么恢复文字 解决方案二: 都是系统,里面程序语言基本上一样,但是也有一些不同.windows比较常见,至于linux...一般是比较高深的人士使用比如noi linux 解决方案三: 没屁点关系,两个不大噶 解决方案四: wind

八一八我这些年的做QQ站的经历(二)

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 大家好,肉肉又回来了.继续八八这些年做站的事!上一篇<八一八我这些年的做QQ站的经历(一) >中我提到了做QQ站百度联盟和GG联盟收入不高这个事,但是没有深入,这里再来唠唠赚钱这个站长永远的痛!现在很多QQ大站都说百度联盟很给力,发钱发的比GG的多了!我没事也申请了一个百度联盟的代码挂在我的QQ男生头像主站做测试,大概3000IP

58之后再无58?八一八那些和58掰腕子的小伙伴们

编者按: 大浪淘沙,http://www.aliyun.com/zixun/aggregation/9201.html">互联网世界里的更新换代愈加频繁,生活服务领域曾经的"发展盛况"一点不亚于千团大战.2006年的中国,以Web2.0概念兴起的生活服务类网站如雨后春笋般涌现,据统计,当时全国共有大大小小的网站近3000家,实力较强的包括58同城.赶集网.口碑网等20多家.经历近几年的发展,优胜劣汰,活下来的不多,稳居行业前列的也不过就是"小鸟两三只"

Android在linux下刷机教程_Android

只需要下载相应的zip包,不需装什么手机助手. 1.下载相应zip包(ROM) http://download.mokeedev.com/ 比如我在上述网站下的魔趣的对应机型的ROM包. 2.linux下载adb 直接一条命令: apt-get install android-tools-adb 3.进入手机的recovery,一般是开机键+音量上,进入sideload模式,等待发送zip包 4.将电脑上的zip包发送到手机里面去,发送完成会自动刷. 5.刷完会自动重启的,选择禁止恢复 6.重启