vlambda博客
学习文章列表

Android 是 Linux 操作系统吗?

Android 是目前使用最广泛的移动操作系统之一,对 Android 有一定了解的人都知道,它是一个基于 Linux 内核的移动操作系统,那 Android 算是 Linux 操作系统吗?我们通过分析几个小问题方式来解答这个问题。


首先,什么是操作系统?

我们看一下维基百科关于操作系统的定义:“操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。操作系统也提供一个让用户与系统交互的操作界面”。也就是说操作系统=内核+系统程序。只有一个内核是没法给用户使用的。


然后,什么是 “Linux 操作系统”?

内核并不能算是操作系统,所以当我们提起 “ Linux 操作系统”时,肯定不会是Linux 内核,而是有两种可能:1,广义上,指基于Linux内核的操作系统;2,狭义上:是指 RedHat、CentOS、UBuntu、Debian、Arch 等广泛使用的 Linux 发行版(,这些 Linxu 发行版的共同特征是Linux内核+GNU组件(用户态),一般也通称 GNU/Linux。

因为其他基于 Linux 内核的操作系统比较少(除了Android),大部分情况都是指 GNU/Linux。


最后,什么是Android?

我们再来看维基百科的定义:“Android,是一个基于Linux内核与其他开源软件的开放源代码的移动操作系统”,所以它在广义上是一种Linux操作系统,那么它是不是狭义上的Linux操作系统,也就是GUN/Linux?


Android 是使用了Linux内核,没有并没有带GNU组件,它用 Bionic 替换 GLibc,用 Dalvik 和 Art替换Jvm,引入了Android Framework层,重新设计了一套App运行机制,也就是说用户态的整套机制都和GNU/Linux完全不一样了。


不但用户态的机制不一样,内核的差别也不小,Android 对 Linux 内核有不少改造(比如电源管理、定时器,引入 Binder 作为核心IPC机制…),Android Framework 和 App 是不能直接运行在通用 Linux 内核上的,反过来GUN/Linux发行版上的程序也很难运行直接在 Android 上 (简单的静态链接的程序可以),而GUN/Linux发行版间一般不会有二进制兼容性问题。


总结来说:广义上 Android 可以说是一种Linux 操作系统,但很少人说会怎么说,而是直接把Android 当成独立种类的操作系统。它和我们平时说的Linux操作系统(GUN/Linux)是完全不同的操作系统。