【Android】Android与Linux的异同概况

Android基于Linux

Android是架构在 Linux之上的,但也对它做了大量的修改。其中包括部分地打破了 Linux主流版本间的兼容性。

Android 内核源码树大概是在 2.6.27 版本中从 Linux 内核主线上分离出来的。但到了Android3.3 又开始回归
Linux 内核主线了。

相似性

在用户模式上,谷歌在一个独立的完整代码仓库中,维护着各种框架(framework)和AOSP(Android 开源项目,Android Open SourceProject)的运行时。从高级视角出发,尽管很难非常准确地说出这两个操作系统之间到底有多少不同,但是大致的估算 Android 和 Linux 在内核层上有 95%的相似之处,而在用户模式下有约65%的相似性。

区别

这一估算的依据是:考虑到在内核级别上,除了少数一些区别之外(ARM 处理器及一些硬件的驱动是非加不可的),内核源码的剩余部分并没有被修改过。这些不同(包括 IPC、内存以及日志增强)归在一起,统称为“Android 特有的特性”。

不过到目前为止,其中的大多数事实上已经被合并到 Linux 主线上去了。有些替换了内核中类似的功能,有些被放在了drivers/staging/android目录中。

两个全新的组件: Dalvik 虚拟机运行时和硬件抽象层(Hardware Abstraction Layer)

而在用户态这一级上,由于引入了两个全新的组件 Dalvik 虚拟机运行时和硬件抽象层(Hardware Abstraction Layer)。再加上替换了 Bionic 的 glibc,以及提供了一个定制版本的 init(系统启动守护进程),Android 和 Linux 的分歧就大多了。

不过尽管是这样,操作系统更多底层的大部分组件仍然没有被修改过,那些原生二进制可执行文件以及进程和线程的行为仍然和它们在 Linux 系统中时一模一样。

Linux已有但是没有发布的特性

Android还更巧妙地使用了一些 Linux 中已有的特性,这些特性大多存在于 Linux 桌面发布版本中,但往往还没有被使用。这些特性包括控制组 (control group)、内存不足时的应对方案(Linux 中也有OOM,但Android 把它扩展成了它自己的内存不足时的进程清理器)以及些安全特性–权能和SELinux。

一些开源项目

Android 中也使用了一些开源项目,这些项目在 Linux 中并不怎么流行,但却是支持 Android的特性的骨干柱石。这些项目(位于 AOSP 的extermal/目录中)主要是负责实现 Android 的网络功能的,包括racoon (vpn)、mdns (服务发现和 Wi-Fi Direct)、dnsmasq、hostapd (tethering和Wi-Fi Direct)和 wpa_supplicant (Wi-Fi)。

图:Android和主流Linux架构比较

在这里插入图片描述

图:谷歌官方架构图

谷歌官方图
图片来源

参考

《最强Android书:架构大剖析》
https://developer.android.com/guide/platform?hl=zh-cn

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林树杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值