android和linux操作系统的区别

来源:互联网 发布:手机频闪灯软件 编辑:程序博客网 时间:2024/05/17 03:54

Android是由Google为移动设备开发的开源操作系统。Android软件的原始开发商Android公司是由Google,Inc.于2005年购买的。它是基于Linux 2.6内核开发的。Linux操作系统于1991年由Linus Torvalds作为台式计算机的开源操作系统开发。Linux操作系统是作为MINIX操作系统开发的,不支持使用Intel 80386机器的32位功能。虽然Android是基于Linux开发的,但操作系统并没有完全使用标准的Linux内核。Android架构在此时只支持两种类型的架构,即:x86和ARM。然而,Linux内核支持不同类型的架构,包括桌面/笔记本电脑/服务器系统中最常用的x86架构。Android系统使用移动互联网设备(MID)的x86架构和手机的ARM平台。


在开发Android操作系统的同时,其Linux内核还添加了一些功能:警报驱动程序,内核调试器,记录器,电源管理和Android共享内存驱动程序。这些增强功能是建立在标准Linux内核之上的。Android内核是基于Linux2.6内核的,它是一个增强内核版本,除了修改部分Bug外,它提供用于支持Android平台的设备驱动,其核心驱动主要包括:


Android Binder,基于OpenBinder框架的一个驱动,用于提供Android平台的进程间通讯(IPC,inter-process communication)。
    源代码位于drivers/staging/android/binder.c


Android电源管理(PM),一个基于标准Linux电源管理系统的轻量级的Android电源管理驱动,针对嵌入式设备做了很多优化。
    源代码位于kernel/power/earlysuspend.c
                        kernel/power/consoleearlysuspend.c
                        kernel/power/fbearlysuspend.c
                        kernel/power/wakelock.c
                        kernel/power/userwakelock.c


低内存管理器(Low Memory Killer),相对于Linux标准OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程来释放需要的内存。
    源代码位于drivers/staging/android/lowmemorykiller.c


匿名共享内存(ashmem),为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。
    源代码位于mm/ashmem.c


Android PMEM(Physical),PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。
    源代码位于drivers/misc/pmem.c


Android Logger,一个轻量级的日志设备,用于抓取Android系统的各种日志。
    源代码位于drivers/staging/android/logger.c


Android Alarm,提供了一个定时器用于把设备从睡眠状态唤醒,同时它也提供了一个即使在设备睡眠时也会运行的时钟基准,
    源代码位于drivers/rtc/alarm.c


USB Gadget驱动,一个基于标准Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的,
    源代码位于drivers/usb/gadget/


Android Ram Console,为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。
    源代码位于drivers/staging/android/ram_console.c。


Android timed device,提供了对设备进行定时控制功能,目前支持vibrator和LED设备。
    源代码位于drivers/staging/android/timed_output.c(timed_gpio.c)。


Android操作系统自发布以来已经有了很多更新。对操作系统的每一次更新都包含很少的错误修复以及一些新功能。Android操作系统的每个新版本都以基于甜点项目的独特名称发布。这些版本遵循字母顺序,例如; 蛋糕,甜甜圈,Eclair,Froyo,姜饼,蜂窝等。未来版本的Android命名为冰淇淋三明治将在2011年第4季度发布。Linux发布在各种各样的风格,包括:debian,ubuntu,knoppix,gentoo, pacman,RPM,fedora,红帽企业Linux,mandriva Linux,slackware和slax为主。基于ubuntu的发行版有几个变种,例如:Edubuntu,Gobuntu,Kubuntu,Lubuntu,Xubuntu,Ubuntu Netbook,Ubuntu手机和Ubuntu Server版本。


大多数Linux发行版使用GNU C库来满足库程序的需要。Android操作系统有自己的C库,称为Bionic,旨在提供快速的执行路径和避免边缘情况。该库包含C BSD库中的内容和Android的原始源代码。Bionic 不与GNU C库,ucLibc,或任何已知的Linux C库相兼容。这意味一下几件事情:
- 你不能指望依赖GNU C库头文件编译出来的东东,能够正常地动态链接到Bionic.
- 你应该 确实地 依赖Bionic并且使用Android工具链来编译你的程序,工具链处理一些至关重要的细节问题,让你的程序能正常运行。

此外,Android,Inc.已经开发了自己的Dalvik虚拟机,而不是Java虚拟机,它使用自己的字节码而不是Java字节码。


Android使用的存储媒体被称为“另一个Flash文件系统”(YAFFS)。由于移动设备中的空间限制,因此使用闪存。与传统硬盘相比,闪存还提供快速读取访问时间和更好的抗动能冲击阻力。Android中使用的闪存系统是NAND类型。标准的Linux系统使用磁盘驱动器而不是闪存。Ext3是标准Linux系统中使用最广泛的文件系统。android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2使用更小的内存来保存他的运行状态,因此它占用内存小;Yaffs2的垃圾回收非常简单而且快速,因此能达到更好的性能;Yaffs2在大容量的NAND Flash上性能表现尤为明显,非常适合大容量的Flash存储。


在Android操作的设备中,减少浪费的电力由自己的Linux Power Manager管理,而不是Linux中采用的高级电源管理(APM)或高级配置和电源接口(ACPI)功能。


0 0
原创粉丝点击