【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

相关推荐
未济2 天前
linux 配置环境变量
linux
傲世仙尊2 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
千里马学框架2 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
美狐美颜SDK开放平台3 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone3 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc3 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
_艾伦 耶格尔.3 天前
进程间通信
linux
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-053 天前
Linux IO编程——静态库、动态库
linux