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)功能。

android和linux操作系统的区别相关推荐

  1. Android与Linux的区别

    Android这一词最先出现在法国作家利尔亚当在1886年发表的科幻小说<未来夏娃>中,作者将外表像人类的机器起名为Android,这也就是Android小人名字的由来.Android是基 ...

  2. Linux内核与Linux操作系统的区别,[科普] Linux 的内核与 Linux 系统之间的关系

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在 FHS 协议里,有这样的规定: /bin/ 需要在单用户模式可用的必要命令(可执行文件):面向所有用户,例如: cat. ls. cp. /boot/ ...

  3. 初识Linux操作系统,Linux的特点与其他操作系统的区别,及Linux版本划分

    操作系统 操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石.操作系统需要处理如管理与配置内存.决定系统资源供需的优先次序.控制输入设备与输出设备.操作网络与管理文件系统等 ...

  4. 【转】Windows Linux MacOS操作系统的区别

    首先,不管是Windows操作系统.Linux操作系统还是MacOS操作系统,甚至包括操作系统的鼻祖UNIX操作系统,最早都是用C语言编写的. 实际上UNIX操作系统和C语言都是由贝尔实验室的汤普森( ...

  5. Linux和其他操作系统的区别

    前言 这是我听老师讲课做的笔记,考试要看的. 这是视频地址 作者:RodmaChen 关注我的csdn博客,更多Linux笔记知识还在更新 为什么用Liunx系统 Linux和windows的区别 L ...

  6. linux与各操作系统的区别

    Linux和Windows的区别  和Linux一样,Windows系列是完全的多任务操作系统.它们支持同样的用户接口.网络和安全性.但是,Linux和Windows的真正区别在于,Linux事实上是 ...

  7. Unix、Linux、Windows操作系统的区别

    1.操作区别 linux区分大小写,windows在dos界面命令下不区分大小写: linux所有内容均以文件形式保存包括硬件,用户,而windows文件和硬件没什么关系,两个之间没有关联: wind ...

  8. TurboLinux入门教程:第六课Linux与其他操作系统的区别(转)

    TurboLinux入门教程:第六课Linux与其他操作系统的区别(转) 第六课 Linux 与其他操作系统的区别 目前运行在 PC 机上的操作系统主要有 Microsoft 的 MS-DOS . W ...

  9. unix与linux的区别_Linux与Unix:有什么区别?

    unix与linux的区别 如果您是20多岁或30多岁的软件开发人员,那么您已经在Linux主导的世界中长大了. 数十年来,它一直是数据中心的重要参与者,尽管很难找到确定的操作系统市场份额报告,但Li ...

最新文章

  1. Fckeditor PHP/ASP File Upload Vul
  2. 局域网打印机共享怎么设置?如何设置打印机共享?
  3. 这个开源项目帮你将Linux命令行一网打尽!
  4. python数据类型介绍_python的数据类型简介
  5. do{...}while(0);写法用途详解
  6. 创新工场CE0李开复:互联网创业黄金时代来临
  7. insert 语句_替换某字段中的特定字符串——MySQL REPLACE 与INSERT 函数详解
  8. BXUG第11期活动
  9. Linux虚机安装配置Tomcat
  10. Freelancer.com(原GAF – GetAFreelancer)帐户里的钱如何取出?
  11. 如何用css实现类似简书的纵向导航/竖排导航
  12. Oracle ora-15070,查询字段过多触发了Oracle的BUG?【ORA-01465: 无效的十六进制数字】...
  13. Mysql设置允许外网访问
  14. 涂抹oracle教你,《涂抹Oracle-三思笔记之一步一步学Oracle》出炉手记
  15. labview计算机论文,毕业论文:基于Labview的信号发生器设计
  16. java获取系统所有字体_java获取本机所有可用字体
  17. 如何解压 GZ 文件
  18. 【学习中】layui前端框架
  19. C++调用ffmpeg批量合并bilibili缓存视频 2.0
  20. 服务器打包文件工具,项目增量发版之全自动打包流程(patch-generator-desk打包软件)...

热门文章

  1. redis笔记_源码_简单动态字符串SDS
  2. HTTP的请求报文与响应报文
  3. 游戏“冰川滑行”设计稿(第一版)
  4. 设置按钮中的图片的旋转,并且旋转之后不变形
  5. Zxing二维码重复扫描,不退出。
  6. Qt5:渐变效果的实现
  7. EJB3与EJB2的差别
  8. C++学习——static
  9. python- 决策树分类器
  10. centos php日志分析,记录一下CentOS7安装GoAccess日志分析工具