百科问答小站 logo
百科问答小站 font logo



对于安卓是否可以理解为安卓系统其实跑的是Linux? 第1页

  

user avatar   mu-tou-long 网友的相关建议: 
      

一句话结论:这个理解并不太准确,正确的理解是完整的安卓操作系统由安卓userland和Linux内核两部分组成


类似Unix(Unix-Like)的操作系统都可以分为两部分:内核和userland。

  • 内核(以及内核模块)以内核模式,在内存的内核空间(kernel space)运行,直接访问内存的物理地址
  • userland(不知道中文应该如何翻译合适)是以用户模式,在内存的用户空间(user space)运行,通过访问虚拟内存地址并由内核/硬件转换成内存物理地址的方式间接访问内存的一系列程序和库。


以Linux为例,常见的划分如下[1]:

       +--------+---------+------------------------------------------------------------------+ |        |User Apps|                bash,FireFox,LibreOffice,ffmpeg...                | |        +---------+-----------------+----------------+--------------------+----------+ |  User  |Low-level|    Daemons      |Windowing System|     Graphics       |Other Libs| |  Mode  |Sys Comps|systemd,logind...| X11,Wayland... |Mesa,AMD Catalyst...|Qt,GTK... | |        +---------+-----------------+----------------+--------------------+----------+ |        |  C Lib  |   glibc(POSIX compatible)/uClibc(Embedded)/bionic(Android)...    | +--------+---------+------------------------------------------------------------------+ |        |         |                    system call Interface                         | |        |         +------------------+------+--------------+-------------+-----------+ | Kernel | Linux   |Process scheduling| IPC  |Mem Manegement|Virtual Files|Networking | |  Mode  | Kernel  |       Subsys     |Subsys|    Subsys    |    Subsys   |  Subsys   | |        |         +------------------+------+--------------+-------------+-----------+ |        |         |  Other components:LVM, DM, Linux Network Scheduler, Netfilter... | |        |         |  Linux Security Modules: SELinux, TOMOYO, AppArmor, Smack...     | +--------+---------+------------------------------------------------------------------+ |                 Hardware (CPU, main memory, block devices, NIC...)                  | +-------------------------------------------------------------------------------------+     

题外话:这也是现在流行的容器(例如Docker)得以实现的基础,通过在内核提供的多种隔离机制,让不同的应用运行在自己独有的userland底层之上。


严格来说,Linux仅仅指内核,并不是一个完整的操作系统。我们常说的Linux都是一个名叫GNU(GNU is Not Unix!)的userland+Linux内核组成的操作系统,完整的写法应该是GNU/Linux。GNU本身是一个旨在用一系列开源软件替代商业Unix并实现类似功能的计划(GNU Project),由这一系列开源软件中的部分集合所组成的操作系统都叫GNU[2]。


事实上GNU有它自己的内核,叫GNU Hurd[3]。只是这个内核从1990年发布初始版本,至今将近30年了尚未成熟,还是处于Beta状态,而且2016年之后就没再更新了。因此,大部分的GNU操作系统,都用Linux或者FreeBSD/OpenBSD等内核替代GNU Hurd,并选择不同的GNU软件集合组成不同发行版,其中采用Linux内核的,就是我们今天常说的Linux操作系统,按照GNU的建议,完整的名称应该叫GNU/Linux(不过这种命名方式在Linux社区受到抵制,但Linux的创始者Linus Torvalds并不反对[4])。而采用FreeBSD内核的发行版,建议称之为GNU/kFreeBSD。例如大家非常熟悉的Debian发行版,完全遵从GNU的建议,有基于Linux内核的Debian GNU/Linux,也有基于FreeBSD内核的Debian GNU/kFreeBSD[5]。


而Android是谷歌开发的另外一个版本的userland,并且使用了Linux内核,所以如果遵从GNU的命名方式,完整写法是Android/Linux。所以很自然的,每个Android/Linux都有其对应的Linux内核版本。


[1]:参考自User space - Wikipedia

[2]:GNU - Wikipedia

[3]:GNU Hurd

[4]:en.wikipedia.org/wiki/G

[5]:Debian GNU/kFreeBSD




  

相关话题

  通过 Bochs 让高性能的 Android 手机流畅运行 Windows 虚拟机是否可行? 
  如何看待 MIUI 工程师袁军对 QQ 后台机制的评论? 
  Linux大神都是怎么记住这么多命令的? 
  如何评价华为Nova系列可能首发极点屏? 
  微软宣布 Windows 11 全部免费升级,还有哪些值得关注的信息? 
  为啥那么多做手机的公司,只有苹果做成了自己的操作系统iOS,其它公司的操作系统都基于Android? 
  Pixel 3 及 Pixel 3 XL 有哪些亮点和槽点? 
  为什么在知乎macOS用户只要黑半句Windows就招来围攻,而对待Linux却只有技术层面的反驳? 
  想做 C++ 方面开发,是基于 Linux 还是基于 Windows 平台? 
  微软有没有可能为Linux系统开发桌面环境? 

前一个讨论
如何看待巨量引擎提出的“新搜索”概念?
下一个讨论
如果唐僧得了痔疮,你作为主刀医师,面对切下来的那块肉,你是选择要面子还是长生不老?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利