问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Android和Linux的区别

发布网友 发布时间:2022-04-23 09:41

我来回答

2个回答

热心网友 时间:2023-05-22 16:06

  Android是基于Linux内核的操作系统,也曾经和Linux基金会因为内核问题产生过分歧,本文将开始对Android的内核进行剖析,主要介绍Android和Linux之间的关系,后续还会讲到Android系统在Linux系统之上扩展的部分功能和驱动。
  虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序。下面我们就来分析一下它们之间究竟有什么关系?
android是否能称为一种新的操作系统呢?至少我自己认为不算是,它最多算作一个新的应用程序罢了。
  一、Android为什么会选择Linux
  成熟的操作系统有很多,但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如:
  1、强大的内存管理和进程管理方案
  2、基于权限的安全模式
  3、支持共享库
  4、经过认证的驱动模型
  5、Linux本身就是开源项目
  更多关于上述特性的信息可以参考Linux 2.6版内核的官方文档,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux的关系。
  二、Android不是Linux
  看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux内核的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,然后我们将对每一个要点进行分析,看完后你就会觉得Android不是Linux了。
  因为它没有本地窗口系统,没有glibc的支持,而且并不包括一整套标准的Linux使用程序,同时增强了Linux以支持其特有的驱动。
  1.它没有本地窗口系统
  什么是本地窗口系统呢?本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OX X的Quartz等。不同的操作系统的窗口系统可能不一样,Android并没有使用(也不需要使用)Linux的X窗口系统,这是Android不是Linux的一个基本原因。
我很奇怪的是linux的Xwindow并不是其核心程序,你可以看到很多嵌入式linux根本不会用到这个图形界面系统,而手机上的android不使用Xwindow不是很正常吗?我们学习的时候用QT难道就不叫做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存储。

热心网友 时间:2023-05-22 16:07

Linux是安卓系统的底层,广义来说安卓系统就是Linux
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
亲肤绒与猫抓布,哪款面料做沙发好? 我需要 天津大学_高等数学(上下册)_蔡高厅,有这个的百度网盘吗? 蔡高厅讲的高数是哪版教材 自考高等数学工专如何学 2022情侣必备的经典感恩节祝福语 送给爱人的感恩节祝福语 感恩节给爱人祝福语 如何下载小升初数学试卷 请问各位朋友,有哪些好网站,上面有各地优秀的小升初的数学试卷? 民生信用卡什么合适 如何除水草叶子上有藻类 常见房屋拆迁补偿方式有哪些 大熊猫智商等于人类多少岁的小孩? 水草与水藻的区别 拆迁房补偿方式都有哪些? 房屋拆迁补偿方式有哪几种 征地拆迁有哪几种补偿方式 房屋拆迁有哪些补偿方式 拆迁补偿的方式有哪些? 房屋拆迁赔偿方式有哪几种 wps表格,输入数字0开头咋不显示,怎么调呀 财政拨款结转与财政拨款结余的区别?经费支出明细科目的理解 WPS表格怎么设置不显示为零的数值 结余和节余怎么区别? 设置WPS单元格不显示零值 财政年终决算结余资金太大有什么影响 事业单位年终专项资金有结余,应该怎么处理?谢谢 如何加强财政结转,结余资金的管理 结余是什么意思。支出是什么意思? 建设项目结余资金应当怎样处理?是否履行报批手续? 又一大熊猫宝宝诞生,2020熊猫宝宝诞生都有哪些? 房屋拆迁补偿的方式都有哪些 水草叶子上的藻怎么处理 全球唯一“外国籍”的2只熊猫,30岁还是单身,为什么不来中国找媳妇呢? 请问拆迁补偿的方式有哪些? 水草表面长满 了藻,怎么办 linux/android/sb/wm/apple/bb操作系统优缺点 为什么大熊猫“星雅”“武雯”要赴荷兰旅居? 企业动迁应该怎么赔偿 linux与安卓什么关系啊?求讲解 如何消灭水草叶上的绿斑藻? 中国放在国外的大熊猫有多少 拆迁按什么办法补偿合适 了解Linux和Android操作系统;Linux和Android的性能特点以及Linux和Android的主要应用范围 去荷兰的大熊猫星雅是四川成都大熊猫繁育研究基地的那只吗 在鱼缸中生长的水藻哪种比较好 旅加大熊猫将返回中国!到如今我国还有多少国宝被借走在外? 房屋拆迁补偿方式 linux,android,各种UI,java的关系? 水草缸总是长藻的原因