大家好,小康来为大家解答以上问题。android,linux很多人还不知道,现在让我们一起来看看吧!
Android虽然是基于Linux内核,但是和Linux还是有很大区别的。比如Android在Linux内核的基础上增加了自己独有的驱动。我们来分析一下他们之间的关系。
android能被称为新的操作系统吗?至少我不这么认为。最多是个新应用。
1.Android为什么选择Linux?
成熟的操作系统有很多,但是为什么Android选择了Linux内核?这与Linux的一些特性有关,例如:
1.强大的内存管理和进程管理方案
2.基于权限的安全模式
3.支持共享库。
4.认证驾驶模型
5.Linux本身就是一个开源项目。
关于以上特性的更多信息,请参考Linux版内核的官方文档,便于我们在后面的学习中更好地理解Android的独特之处。接下来分析Android和Linux的关系。
第二,Android不是Linux。
看到这个标题你可能会有点困惑。不是一直说Android是基于Linux内核的吗?为什么现在不是Linux了?迷茫也很正常。请先阅读以下几点,然后我们将对每一点进行分析。看完之后你会觉得Android不是Linux。
因为它没有本地窗口系统,没有glibc支持,也不包含一套完整的标准Linux使用程序。同时,它增强了Linux以支持其独特的驱动程序。
1.它没有本地窗口系统。
什么是本地窗口系统?本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OX X的Quartz等。不同操作系统的窗口系统可能不同。Android不使用(也不需要使用)Linux的X window系统,这是Android不是Linux的一个基本原因。
我很惊讶linux的Xwindow不是它的核心程序。你可以看到很多嵌入式linux系统根本不用这个图形界面系统。手机上的安卓不用Xwindow不是很正常吗?我们学习的时候用QT不是叫linux系统吗?
2.它不支持glibc
因为Android最初是在一些便携移动设备上使用的,也许是出于效率的考虑,Android并没有使用glibc作为C库,而是由Google开发了一个仿生libc来代替glibc。
库文件不一样好吧,因为迁移明显需要修改库文件和头文件,请指教。
3.它不包括一套完整的标准Linux使用程序。
Android并没有完全抄袭Liunx系统的内核。除了修复了Liunx的一些bug,还增加了很多内容,比如其ARM架构增加的金鱼平台,yaffs2 FLASH文件系统。
4.Android专有驱动程序
除了以上的不同,Android还增强了Linux设备驱动,主要有以下几点。
1)Android Binder是基于OpenBinder框架的驱动,用于提供Android平台的进程间通信(IPC)功能。源代码位于drivers/staging/Android/binder . c。
2)Android电源管理(PM)一个基于标准Linux电源管理系统的轻量级Android电源管理驱动程序,针对嵌入式设备做了很多优化。源代码位于:
内核/电源/早期挂起. c
内核/电源/控制台arlysuspend.c
kernel/power/fbearlysuspend.c
内核/电源/唤醒锁
kernel/power/userwakelock.c
如果给内核加驱动也能叫不一样?
3)低内存黑仔比Linux的标准OOM(内存不足)机制更灵活。它可以根据需要终止进程来释放所需的内存。源代码位于drivers/staging/Android/lowmemorykiller . c。
4)匿名共享内存(Ashmem)在进程之间提供了大块的共享内存,同时为内核提供了回收和管理这些内存的机制。源代码位于mm/ashmem.c中
5)Android PMEM(物理)PMEM用于为用户空间提供连续的物理内存区域。DSP和一些设备只能在连续的物理内存上工作。源代码位于drivers/misc/pmem.c。
6)Android Logger是一个轻量级的日志设备,用来抓取Android系统的各种日志。源代码位于drivers/staging/Android/logger . c。
7)Android Alarm提供了一个将设备从睡眠中唤醒的计时器,它还提供了一个时钟参考,即使在设备睡眠时也会运行。源代码位于drivers/rtc/alarm.c/alarm.c。
8)USB小工具驱动是基于标准Linux USB小工具驱动框架的设备驱动,Android的USB驱动基于gaeget框架。源代码位于drivers/usb/gadget/中。
9)Android RAM控制台为了提供调试功能,Android允许将调试日志信息写入一个名为Ram控制台的设备中,这是一个基于Ram的缓冲区。源代码位于drivers/staging/Android/ram _ console . c。
10)Android定时设备提供设备定时控制的功能,目前支持振动器和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存储。
本文到此结束,希望对大家有所帮助。