安卓与Linux有什么关系

作者&投稿:唱栋 (若有异议请与网页底部的电邮联系)
Linux和安卓有什么关系?~

Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧。
  虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序。
Linux 仅仅是内核,根本就不是一个完整的操作系统。
一个完整的操作系统,包括内核,功能库,用户界面三个主要部分。一个应用程序,主要运行的并不是依靠内核来运行,它主要是借助功能库提供程序功能函数支持,用户界面层提供显示和交互的功能函数支持,内核只是一个硬件驱动交互,任务分配,内存管理,IO 处理的最底层的支持。


  一、Android为什么会选择Linux
  成熟的操作系统有很多,但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如:
  1、强大的内存管理和进程管理方案
  2、基于权限的安全模式
  3、支持共享库
  4、经过认证的驱动模型
  5、Linux本身就是开源项目

  二、Android不是Linux
  因为它没有本地窗口系统,没有glibc的支持,而且并不包括一整套标准的Linux使用程序,同时增强了Linux以支持其特有的驱动。
  1.它没有本地窗口系统
   本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OX X的Quartz等。不同的操作系统的窗口系统可能不一样,Android并没有使用(也不需要使用)Linux的X窗口系统,这是Android不是Linux的一个基本原因。
  2.它没有glibc支持
  由于Android最初用于一些便携的移动设备上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。
  3.它并不包括一整套标准的Linux使用程序
  Android并没有完全照搬Liunx系统的内核,除了修正部分Liunx的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH文件系统等。
  4.Android专有的驱动程序
  除了上面这些不同点之外,Android还对Linux设备驱动进行了增强,主要如下所示。
  1)Android Binder 基于OpenBinder框架的一个驱动,用于提供 Android平台的进程间通信(InterProcess Communication,IPC)功能。源代码位于drivers/staging/android/binder.c。
  2)Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式设备做了很多优化。源代码位于:
  kernel/power/earlysuspend.c
  kernel/power/consoleearlysuspend.c
  kernel/power/fbearlysuspend.c
  kernel/power/wakelock.c
  kernel/power/userwakelock.c
如果给内核添加驱动也可以称之为不同的话?
  3)低内存管理器(Low Memory Killer) 比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程以释放需要的内存。源代码位于 drivers/staging/ android/lowmemorykiller.c。
  4)匿名共享内存(Ashmem) 为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。源代码位于mm/ashmem.c。
  5)Android PMEM(Physical) PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。源代码位于drivers/misc/pmem.c。
  6)Android Logger 一个轻量级的日志设备,用于抓取Android系统的各种日志。源代码位于drivers/staging/android/logger.c。
  7)Android Alarm 提供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。源代码位于drivers/rtc/alarm.c。
  8)USB Gadget驱动 一个基于标准 Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的。源代码位于drivers/usb/gadget/。
  9)Android Ram Console 为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。源代码位于drivers/staging/android / ram_console.c。
  10)Android timed device 提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。源代码位于drivers/staging/android /timed_output.c(timed_gpio.c)。
  11)Yaffs2 文件系统 Android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2能使用更小的内存来保存其运行状态,因此它占用内存小。Yaffs2的垃圾回收非常简单而且快速,因此能表现出更好的性能。Yaffs2在大容量的NAND Flash上的性能表现尤为突出,非常适合大容量的Flash存储。

Linux与Androld的关系
虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序。下面我们就来分析一下它们之间究竟有什么千丝万缕关系?
1 安卓为什么会选择Linux
成熟的操作系统有很多,比如Unix系统。但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如:
(1)强大的内存管理和进程管理方案
(2)基于权限的安全模式
(3)支持共享库
(4)经过认证的驱动模型
(5)Linux本身就是开源项目
更多关于上述特性的信息可以参考Linux 2.6版内核的官方文档,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux真正的关系。
2Android不是Linu×
看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux内核的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,然后我们将对每一个要点进
行分析,看完后你就会觉得Android不是Linux了。
①它没有本地窗口系统
(1)它没有glibc的支持
(2)它并不包括一整套标准的Linux使用程序
(3)它增强了Linux以支持其特有的驱动
1、它没有本地窗口系统
什么是本地窗口系统呢?本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OS的Quartz等。不同的操作系统的窗口系统可能不一样,Android并没有使用(也不需要使用)Linux的X窗口系统,这是Android不是Linux的一个基本原因。

2、它没有glibc支持
由于Android最初用于一些便携的移动设备上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。
3、它并不包括一整套标准的Linux使用程序
Android并没有完全照搬Linux系统的内核,除了修正部分Linux的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH文件系统等。
4、Android专有的驱动程序
除了上面这些不同点之外,Android还对Linux设备驱动进行了增强,主要如下所示。
(1) Android Binder基于OpenBinder框架的一个驱动,用于提供Android平台的进程间通信( InterProcess Communication,IPC)功能。源代码位于

drivers/staging/android/binder.c。
(2) Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式设备做了很多优化。源伐码位于:
Ⅰ kerneUpower/earlysuspend.c
Ⅱ kernel/power/consoleearlysuspend.c
Ⅲ kernel/power/fbearlysuspend.c
Ⅳ kemel/power/wakelock.c
Ⅴ kernel/power/userwakelock.c
(3)低内存管理器(Low Memory Killer) 比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程以释放需要的内存。源代码位于

drivers/staging/android/lowmemorykiller.c.
(4)匿名共享内存(Ashmem) 为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。源代码位于mm/ashmem.c。
(5) Android PMEM (Physical) PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。源代码位于drivers/misc/pmem.c。
(6) Android Logger -个轻量级的日志设备,用于抓取Android系统的各种日志。源代码位于drivers/staging/android/logger.c。

(7) Android Alarm捉供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。源代码位于drivers/rtc/alarm.c。
(8) USB Gadget驱动一个基于标准Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的。源代码位于drivers/usb/gadget/。
(9) Android Ram Console为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。源代码位于drivers/staging/android/ramL console.c。
(10) Android timed device提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。源代码位于drivers/staging/android /timed_output.c(timed_gpio.c)。

(11) Yaffs2文件系统Android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2能使用更小的内存来保存其运行状态,因此它占用内存小。Yaffs2的垃圾回收非常简单而且快速,因此能表现出更好的性能。Yaffs2在大容量的NAND Flash上的性能表现尤为突出,非常适合大容量的Flash存储。上面这些要点足以说明Android不是Linux。

安卓不是linux
引用:
Linux Kernel的维护者Greg Kroah-Hartman宣布,将Android 代码从 Linux kernel 代码库中删除。这意味着,Linux Kernel的开发小组不认可Android的贡献,两者产生了冲突。
  Greg Kroah-Hartman写了一篇详细的文章,解释这个决定。下面就来看看,他是怎么说的,以及Android到底是一个什么样的系统。在这之前,你最好知道Greg Kroah-Hartman是谁。他是目前Linux Kernel的核心开发人员,负责stable软件包的发布。就是说,每一个新版本的Linux Kernel,都是经过他的手流出来的。此外,他还负责硬件驱动的部署。而他的手机就是HTC G1,每天都在使用。所以,他是绝对有资格谈论这个问题的,他的看法代表了Linux社区对Android的看法。  首先,他指出Android和其他的Linux发行版不一样:  “Google has taken the Linux kernel, and nothing else from a “traditional” Linux system.
  Google只用了kernel,别的东西都没用。”  这就是说,与Ubuntu、Debian、Redhat这样的传统Linux发行版相比,只有系统的底层结构是一样的,其他东西在Android里都不一样,尤其是程序员的编程接口是完全不同的。因此,Android应用程序都必须重新写过,现存的Linux程序无法移植上去。所以,从严格意义上说,Android是一种全新的系统,它与Linux的距离,比Mac OS与Linux的距离还要远。 然后,Greg Kroah-Hartman肯定了Android这样做的积极意义:
  “Android also solves the problem that the phone manufacturers had been having for many years: a free version of Java and a unified application layer that programmers can write to that will work on all phone platforms that integrate it.
  它解决了长期令手机制造商头痛不已的问题:业界缺乏一个开源的Java虚拟机,以及统一的应用程序接口。现在,程序员只要写一次程序,就能在各种手机硬件平台之上使用。”  这段话解释了,为什么Android的应用程序,都必须用Java语言开发。因为不这样做的话,没法让程序做到硬件无关。  且慢,这真的是理由吗?传统的Linux系统,也并不依赖特定的硬件啊!只要把源代码根据不同的平台,分别编译一下,同一个程序不也照样可以在不同的硬件架构、不同的Linux发行版中使用吗?  那么,Android只采用kernel、只允许用java编程的真正原因,到底是什么? 台湾的科技网志MMDays一语道破真相:  “Linux kernel的版权是GPL。
  这下问题来了:如果你是硬件厂商,希望你的硬件能在 Linux kernel 下运作,那么就必须要有驱动程序。如果驱动程序的程序代码公开,等于硬件规格也公开的差不多了。许多厂商不愿意这么做,所以就提供编好的驱动程序,但不提供原始码。  Android 的重点就是商业应用,Google采用了一些手法来绕过这问题。他们把驱动程序移到 “userspace”,也就是说,把驱动程序变成在 Linux kernel 上头跑,而不是一起跑的东西,这样就可以避过GPL。然后,在 kernel 这边开个小门,让本来不能直接控制到硬件的 “userspace” 程序也可以碰得到,这样只要把”开个小门”的程序代码公布就行啦。”  看明白了吗?  这段话的意思是说,Google玩了一个花招,在kernel和应用程序之间,自己做了一个中间层,这样就既不违反GPL许可,又能不让外界看到厂商的硬件驱动和应用程序的源码。这样做或许有利于推广Android,吸引厂商和软件开发商的加入,但是也给Linux Kernel带来了麻烦。Greg Kroah-Hartman直截了当说出了自己的不满。  “…any drivers written for Android hardware platforms, can not get merged into the main kernel tree because they have dependencies on code that only lives in Google’s kernel tree, causing it to fail to build in the kernel.org tree.
  所有为Android写的硬件驱动,都不能合并入kernel。因为它们只在Google的代码里有效,在kernel里根本没法用。
Because of this, Google has now prevented a large chunk of hardware drivers and platform code from ever getting merged into the main kernel tree. Effectively creating a kernel branch that a number of different vendors are now relying on.
  由于这个原因,Google也从不把大量的硬件驱动程序和平台源码向kernel提交。实际上,它创造出了一个kernel的分支,大量的开发者都依赖那个分支。”  这就是Android干的事情:它修改了Kernel,但是又不提供修改的细节,自己搞了一个封闭的系统。说得难听一点,它利用了开源社区,要求开源社区为它做贡献,却又不愿提供回报。  所以,Linux Kernel就把Android踢出去了,真是再正常不过了。完整的文章在这里: http://hi.baidu.com/dongfengxiao/blog/item/5722821e3418da12403417e6.html/cmtid/a8b7f61b52f892dbad6e75a0

安卓是其于Linux开发的 即安卓底层内核还是Linux 只不过安卓优化了部分内核 加入了一些谷歌的应用的内核

安卓是其于Linux开发的 即安卓底层内核还是Linux 只不过安卓优化了部分内核 加入了一些谷歌的应用的内核

没什么关系,安卓是安卓,linux是linux

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及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工作的一个工具。


飞腾Linux无缝运行安卓:采用麟卓卓懿运行环境
据10 月 23 日消息报道,麟卓发布,麟卓卓懿移动应用兼容运行环境(产品名称:卓懿)作为国内首个 Linux 平台上的安卓兼容运行环境,突破非虚拟化架构、层次化迁移、图形加速等系列关键技术,实现安卓与飞腾平台的无缝融合,使安卓应用同 Linux 应用一样,高效稳定运行在飞腾平台上;率先实现多窗口融合,...

Linux上的麟卓卓懿是干嘛的?
麟卓本卓来啦,麟卓卓懿移动应用兼容运行平台是桌面电脑融合移动应用产品,可实现各类移动应用在桌面系统上无缝运行,通俗一点说就是可以让用户在Linux上使用安卓的应用 支持多个应用窗口同时打开,打王者的同时还能一边刷新闻一边回微信,只要你屏幕够大,想开几个开几个,而且还支持鼠标将文件从微信拖拽到 ...

linux和windows有什么区别 linux优缺点有哪些【详解】
linux和windows的区别: 1.首先从界面上个人感觉windows的界面比linux漂亮,从视觉效果上来看windows给人感觉更好linux和windows的区别 linux优缺点一览 2.软件的使用,linux软件都是开源的由全国各地技术执行者提供,windows上也有免费的但很多是需要授权才可以使用的。3.在使用方面的区别是windows可以直接打开...

Linux上运行麟卓卓懿上的安卓应用兼容性好吗?
我觉得挺不错的,卓懿在兼容运行环境这方面的技术和适配生态都挺强的,像一般的麒麟呀统信UOS呀深度Deepin这些系统都兼容,另外还支持飞腾、鲲鹏、海思麒麟、海光、兆芯、瑞芯等等很多国产处理器,本来安卓应用运行在Linux平台上就比较难了,卓懿里的安卓应用运行起来还特流畅,真的不得不赞一下,用了好...

linux操作系统有哪些特点
Linux操作系统是一个开源、免费、可定制且稳定的操作系统。1. 开源性 Linux操作系统是开源的,这意味着其源代码是公开的,任何人都可以查看、修改和分发源代码。这种开放性促进了全球范围内的协作和创新,使Linux系统不断进化和发展。因为开源,所以开发者可以根据自己的需求定制Linux系统,这使得Linux在各...

麟卓卓懿都支持哪些Linux系统?
卓懿现在已经更新到了8.0版本,8.0版本增加了Android 9.0运行环境,支持主流的Linux发行版(4.0≤内核≤5.17),包括Ubuntu、基于Ubuntu的各个流行发行版、Debian、Manjaro、OpenSUSE、统信、麒麟、深度Linux等,市场上主流的Linux硬件,基本上都能安装卓懿。百度谢邀 ...

卓懿应用商城里的Android应用在Linux平台上的兼容性怎么样?
我个人很喜欢卓懿应用商城,卓懿的兼容性比较好,在Linux用户中的评价一直很高,其实这一定程度上就是得益于商城里应用的超强兼容性,卓懿支持的Linux系统也超多,像麒麟、统信UOS还有Ubuntu、Fedora、Manjaro这些系统全都适配,很多Linux用户电脑上的应用都是从卓懿应用商城里安装的,确实很好用。百度回答...

Linux上麟卓卓懿应用商城互传文件功能好用吗?
挺不错的,卓懿应用商城的互传文件功能可以让文件在Linux系统和卓懿安装的应用之间进行互传,很方便,当然了,不仅仅是单个文件,整个文件夹也可以互传,文件夹也能从Linux系统上导入到卓懿应用商城,另外还可以对文件和文件夹进行管理,并且对文件或文件夹进行重命名或者删除,体验还不错,这个软件在...

嵌入式linux技术Linux优势
Linux以其卓越的系统性能,尤其是在网络协议领域的突出表现,树立了技术领域的标杆。它的最大优势在于其开源的特性,这意味着开发者在遇到技术难题时,可以直接查看和修改源代码,无需担心版权问题。全球有一支庞大的开发者社区,他们都是Linux技术的高手,这使得问题的解决速度极快,开发者可以迅速获取到...

Linux版本介绍
严格来说,Linux专指内核,但人们通常将其扩展到基于Linux内核,结合GNU工程工具和数据库的完整操作系统体系。这个名字源于芬兰大学生Linus Torvalds,他于1991年出于对自由UNIX操作系统的追求,创立了Linux项目。Linux的诞生源于互联网,它的孕育和发展都离不开网络的支持。起初,Torvalds鼓励所有人参与,要求...

黄石市19392394140: linux与安卓什么关系啊?求讲解 -
貊面单硝: 安卓是基于Linux内核,但不是Linux操作系统.“Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备.目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”.Android操作系统最初由Andy Rubin开发,最...

黄石市19392394140: Linux和安卓有什么关系? -
貊面单硝: Linux与Androld的关系 虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序.

黄石市19392394140: 在嵌入式,linux和安卓什么关系 -
貊面单硝: linux是操作系统,可以在pc,移动端,嵌入式平台等很多场合使用,像windows是微软的pc操作系统一样;而安卓是基于linux开发的移动端操作系统,主要用在手机上,像ios系统一样;也就是说安卓是在linux的基础上开发的移动端操作系统,谢谢

黄石市19392394140: Android是基于Linux内核的,那么Linux与Android到底是什么关系? -
貊面单硝: linux内核,表示..它是基于linux的...表明,linux的很多东西,android是支持的...但是 没有说,linux是基于android的,所以,表明...电脑上,不能用android程序...这个内核呢,简而言之就是,一个,负责调用你这个手机or电脑的所有硬件的一个软件,通过这个内核,就可以对硬件任意操作 然后,其他的呢,就是些用户界面,让你去对这些东西操作 see?

黄石市19392394140: linux操作系统和手机的安卓系统有什么关系? -
貊面单硝: linux不是操作系统,只是个内核.linux的用途很广的,dvd也用这个.android是基于linux内核开发的,不过现已被linux基金会除名

黄石市19392394140: Linux 和安卓系统有什么关系,求详述. -
貊面单硝: Linux是电脑的操作系统,而安卓是针对手机开发的系统.同时操作系统,只是针对的硬件设备不同罢了

黄石市19392394140: Android和Linux的区别 -
貊面单硝: Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧,本文将开始对Android的内核进行剖析,主要介绍Android和Linux之间的关系,后续还会讲到Android系统在Linux系统之上扩展的部分功能和驱动. 虽然...

黄石市19392394140: Linux 安卓 windows 三者的关系 -
貊面单硝: 可以说linux和安卓有点儿关系,安卓 和 windows ,linux 和windows一点儿关系没有~ 首先,linux是一个开源的操作系统.无偿,免费,而且所有人都能参与开发.他的目的就是让所有人能够平等的使用.开源就是开放源代码,linux的内核源代码...

黄石市19392394140: 安卓系统与Linux系统的联系?
貊面单硝: 安卓就是基于linux内核来创建的系统框架,简单点说,安卓是个就是依靠linux来运转,一提起linux,什么塞班之类的统统靠边站,随着安卓市场保有量的提升,安卓已经超越塞班苹果,成为第一大操作系统

黄石市19392394140: linux 与android 有什么关系
貊面单硝: 安卓是基于Linux的,仔细观察下安卓自带的任务管理器,就不难发现多任务多线程的特点!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网