百科问答小站 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




  

相关话题

  为什么有些软件不能用 Rosetta2 转义运行? 
  用惯了 iOS 真的换不了安卓吗? 
  linux内核切换成分页模式后,ljmp $__BOOT_CS,$1f 这行代码有什么意思? 
  谷歌限制未来华为手机对安卓系统的使用之后,华为的海外市场怎么办? 
  Linux大神都是怎么记住这么多命令的? 
  Linux 图形界面的显示原理是什么? 
  为什么有人旁敲侧击阴阳怪气的觉得中国空间站不该用中文? 
  怎么看待三星大量手机在今天(5.23)凌晨系统崩溃并数据丢失? 
  如果中国一开始就禁止微软和英特尔AMD进入中国大陆地区,现在的中国大陆地区会出现哪些现象? 
  为什么 Linux 要用 tar.gz,很少用 7Z 或 ZIP? 

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





© 2024-09-28 - tinynew.org. All Rights Reserved.
© 2024-09-28 - tinynew.org. 保留所有权利