1.Android系统层面的底层是Linux,并且在中间加上了一个叫做Dalvik的Java虚拟机,从表面层看是Android运行库。每个Android应用都运行在自己的进程上,享有Dalvik虚拟机为它分配的专有实例。为了支持多个虚拟机在同一设备上高效运行,dalvik被改写过。Dalvik虚拟机执行的是Dalvik格式的可执行文件(.dex)-该格式经过优化,以将内存好用降到最低。

Android内核和Linux内核的差别主要体现在如下11个方面:

1.Android Binder

Android Binder是基于Openbinder框架的一个驱动,用于提供Android平台的进程间的通信(IPC)。原来的Linux系统上层应用的进程间通信主要是D-bus,采用消息总线的方式来进行IPC。其源代码位于drivers/staging/android/binder.c

2.Android电源管理(PM)

Android电源管理是一个基于标准Linux电源管理系统的轻量级Andorid电源管理驱动,针对嵌入式设备做了很多优化。利用锁和定时器来切换系统状态,控制设备在不同状态下的功耗,以达到节能的目的。其源码位于kernel/power/earlysuspend.c  kernel/power/consoleearlysuspend.c  kernel/power/fbearysuspend.c kernel/power/wakelock.c kernel/power/userwakelock.c

3. 低内存管理器(Low memory Killer)

Android中低内存管理器和linux标准的OOM相比,器机制更加灵活,可以根据需要杀死进程来释放需要的内存。Low memory Killer的代码非常简单,里面关键是函数Lowmem_shrinker().作为一个模块在初始化时调用register_shrike注册一个Lowmen_shriker,它会被vm在内存紧张的情况下调用。源码位于drivers/staging/android/lowmemorykiller.c

4.匿名共享内存(Ashmem)

匿名共享内存为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。如果一个程序尝试访问Kernel释放的一个共享内存块,它将会受到一个错误提示,然后重新分配内存并重载数据。其源码位于mm/ashmem.c

5. Android PMEM(Phsical)

PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。驱动中提供了mmap、open/release和ioctl等接口。

6.Android Logger

Android Logger是一个轻量级的日志设备,用于抓取Android系统的各种日志,是Linux锁没有的

7.Android Alarm

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

8.USB Gadget驱动

此驱动是一个具有标准Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gadget框架的。其源码位于如下文件:

drivers/usb/gadget/android.c  drivers/usb/gadget/f_adb.c  drivers/usb/gadget/f_mass_storage.c

9.Android Ram Console

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

10.Android timed device

Android timed device提供了对设备进行定时控制功能,目前仅仅支持vibrator和LED设备。其源码为drviers/staging/adnroid/timed_output.c

11.Yaffs2文件系统

在Android系统中,采用Yaffs2作为MTD NAND FLASH文件系统。Yaffs2是一个快速稳定的应用于NAND和NOR FLash的跨平台的嵌入式设备文件性,同其他Flash文件系统相比,Yaffs2使用更小的内存来保存运行状态,因此它占用内存小;Yaffs2的垃圾回收非常简单而且快速,因此能够达到更好的性能;其源代码位于fs/yaffs2目录

Android内核和Linux内核的区别的更多相关文章

  1. 各Android版本的Linux内核表(待续)以及如何下载相应的android源码

    一.Android版本与Linux内核的关系 http://www.cnblogs.com/qiengo/archive/2012/07/16/2593234.html 英文名 中文名 Android ...

  2. 【原创】解BUG-xenomai内核与linux内核时间子系统之间存在漂移

    版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 一.问题起源 何为漂移?举个例子两颗32.768kH ...

  3. 在Ubuntu上为Android系统编写Linux内核驱动程序(老罗学习笔记1)

    这里,我们不会为真实的硬件设备编写内核驱动程序.为了方便描述为Android系统编写内核驱动程序的过程,我们使用一个虚拟的硬件设备,这个设备只有一个4字节的寄存器,它可读可写.想起我们第一次学习程序语 ...

  4. 在Ubuntu上为Android系统编写Linux内核驱动程序

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6568411 在智能手机时代,每个品牌的手机都有 ...

  5. 【内核】Linux内核Initrd机制解析,内核更新步骤,grub配置说明

    什么是Initrd initrd的英文含义是 boot loader initialized RAM disk,就是由boot loader初始化的内存盘.在 linux内核启动前, boot loa ...

  6. Linux内核分析——Linux内核学习总结

    马悦+原创作品转载请注明出处+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核学习总结 一 ...

  7. 内核操作系统Linux内核变迁杂谈——感知市场的力量

    本篇文章个人在青岛游玩的时候突然想到的...今天就有想写几篇关于内核操作系统的博客,所以回家到以后就奋笔疾书的写出来发表了 Jack:什么是操作系统? 我:你买了一台笔记本,然后把整块硬盘彻底格式化, ...

  8. 《Linux内核--分析Linux内核创建一个新进程的过程 》 20135311傅冬菁

    20135311傅冬菁 分析Linux内核创建一个新进程的过程 一.学习内容 进程控制块——PCB  task_struct数据结构 PCB task_struct中包含: 进程状态.进程打开的文件. ...

  9. 【内核】linux内核启动流程详细分析

    Linux内核启动流程 arch/arm/kernel/head-armv.S 该文件是内核最先执行的一个文件,包括内核入口ENTRY(stext)到start_kernel间的初始化代码, 主要作用 ...

随机推荐

  1. Unity-反编译由IL生成的DLL文件

        本文由博主SunboyL原创,转载请注明出处:http://www.cnblogs.com/xsln/p/DLL_DeCompilation.html     在Unity实际开发过程中,我们 ...

  2. CentOS工作内容(七)禁用IPV6

    CentOS工作内容(七)禁用IPV6 用到的快捷键 tab 自动补齐(有不知道的吗) ctrl+a 移动到当前行的开头(a ahead) ctrl+e 移动到当前行的开头(e end) ctrl+u ...

  3. 【剑指offer】旋转数组的最小数字

    一.题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...

  4. (转)Elasticsearch查询规则------match和term

    es种有两种查询模式,一种是像传递URL参数一样去传递查询语句,被称为简单搜索或查询字符串(query string)搜索,比如 GET /megacorp/employee/_search //查询 ...

  5. switch语句语法

    switch  case语句适用于从一组互斥的分支中选择一个执行分支. int day = 0;switch (day) { : dayName = "Sunday"; break ...

  6. Linux系统——MySQL基础(三)

    ### MySQL主从复制实践#### 主从复制实践准备(1)主从复制数据库实战环境准备MySQL主从复制实践对环境的要求比较简单,可以是单机单数据库多实例的环境,也可以是两台服务器,每个机器一个独立 ...

  7. 7.MySQL必知必会之用通配符进行过滤-like

    用通配符进行过滤-like 1. like操作符 先说两个概念:

  8. docker:搭建lamp应用

    (原文http://blog.csdn.net/smallfish1983/article/details/40108999?utm_source=tuicool) LAMP 指的 Linux(操作系 ...

  9. kendo grid应用经验总结

    学习网址 https://docs.telerik.com/kendo-ui/controls/editors/dropdownlist/overview https://demos.telerik. ...

  10. JSP—内置对象

    JSP内置对象是Web容器创建的一组对象,不用声明,直接使用 out 输出对象 类型 javax.servlet.jsp.JspWriter 作用域 Page request 请求对象 类型 java ...