Android是基于Linux内核的操作系统。然而,Android设备上运行的内核实际上与谷歌选择的LTS Linux内核有很大不同。因此,谷歌试图缩小Android设备内核与主线Linux内核之间的差距,让设备内核更接近上游内核的主线。

华为鸿蒙OS 2.0兼容安卓,是不是意味着底层还是安卓?

华为鸿蒙OS 2.0兼容安卓,是不是意味着底层还是安卓

不是底层安卓。鸿蒙系统是微内核架构,是基于万物互联的理念设计。不能说鸿蒙2.0系统兼容安卓就是底层还是安卓。大家都知道的,现在微软新版11也是兼容安卓系统了,那就是底层还是安卓,这样理解就错了。鸿蒙系统和安卓系统是两个不同的系统,不能混淆视听,他们的框架和内容不一样,服务范围不一样。鸿蒙系统是世界上崭新的事物,是原先所没有的,万物互联,智联系统,而安卓系统是仅用于手机的操作系统。

谷歌系统升级,安卓将采用Linux内核,满足手机高性能需求,你怎么看?

首先作为一个前资深的 Android 程序员,一定要纠正一下这个问题,不是谷歌系统升级,安卓将采用 Linux 内核。不是将。而是 Android 一直就是采用的 Linux 内核。安卓Android本身就是一种基于 Linux 的自由及开放源代码的操作系统。系统内核Android 是运行于 Linux kernel 之上,但并不是 GNU/Linux。

因为在一般 GNU/Linux 里支持的功能,Android 大都没有支持,包括 CairoX11AlsaFFmpegGTKPango 及 Glibc 等都被移除掉了。Android 又以 Bionic 取代 Glibc以 Skia 取代 Cairo再以 opencore 取代 FFmpeg 等等。

Android 为了达到商业应用,必须移除被 GNU GPL 授权证所约束的部份,例如 Android 将驱动程序移到 Userspace,使得 Linux driver 与 Linux kernel 彻底分开。Bionic/Libc/Kernel/ 并非标准的 Kernel header files。

Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数数据结构与宏。Android 的 Linux kernel 控制包括安全Security,存储器管理Memory Management,程序管理Process Management,网络堆栈Network Stack, 驱动程序模型Driver Model等。

下载 Android 源码之前,先要安装其构建工具 Repo 来初始化源码。Repo 是 Android 用来辅助 Git 工作的一个工具。通过上述我们就可以看出 Android 就是运行在 Linux Kernel 之上的,基于授权版权等原因,它只不过是没有 GNU/Linux 功能那么全面。为什么会出现这个问题?Android 是基于 Linux 内核的操作系统,但是,运行在 Android 设备上的内核其实与 Google 选择的 LTS 版本 Linux 内核有很大不同。

在到达每一台 Android 设备前,内核会经历三个阶段的 forkGoogle 会先选择某个 LTS长期支持版本的 Linux 内核,打上 Android 操作系统的特定补丁,使其成为 Android 通用内核紧接着,通用内核被交付给高通等 SoC 供应商,打上硬件补丁最后,SoC 内核再被移交至设备制造商,打上设备特定的各类元件补丁,这也就构成到每台设备中的设备内核。

这是一个非常漫长的过程,执行多个fork,处理几百万行代码,大大拖慢了整个开发速度。所以安卓设备使用的内核落后于Linux内核主线两到三年。谷歌最近在10月发布了Pixel 4,其Linux内核是2017年11月发布的4.14版LTS。


文章TAG:安卓内核在哪个区  安卓  内核  Linux  采用  
下一篇