【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

相关推荐
颂love21 小时前
Linux命令的简单学习
linux·运维·学习
satadriver21 小时前
ip-guard网络通信加解密
linux·网络·tcp/ip
meilindehuzi_a1 天前
【Linux 进程基础】一文读懂命令行参数与环境变量
linux·服务器
燕-孑1 天前
Nginx详解——进阶
运维·nginx
用户86859214418741 天前
Linux I2C 调试实录:用寄存器打印揪出 TRISE 配置过小
linux
张小潇1 天前
AOSP15 WMS/AMS系统开发 -窗口动画源码分析
android
脆皮炸鸡7551 天前
进程信号~信号的产生
linux·服务器·开发语言·经验分享·笔记·学习方法
Emtronix英创1 天前
RK3568 CAN驱动测试及使用说明
linux·arm开发·rk3568·全国产主板
vortex51 天前
CentOS 系包管理器完全指南:从 dnf 到 rpm
linux·运维·centos
小当家.1051 天前
Codex + SSH 远程运维实战:让 AI 管你的云服务器
运维·服务器·人工智能·ssh·codex·ai-coding