首页 要闻 > 内容

今日android(linux)

时间:2023-08-22 17:51:44 来源:
导读 大家好,小康来为大家解答以上问题。android,linux很多人还不知道,现在让我们一起来看看吧! Android虽然是基于Linux内核,但是和Linux还...

大家好,小康来为大家解答以上问题。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存储。

本文到此结束,希望对大家有所帮助。

标签:
最新文章