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 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...

    老罗版本参见:https://blog.csdn.net/luoshengyang/article/details/6573809 在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简 ...

  2. Android版本与Linux内核版本的关系

    Android版本与Linux内核版本的关系 一.Android版本与Linux内核的关系 英文名 中文名 Android版本 Linux内核版本 No 无 1.1 Cupcake 纸杯蛋糕 1.5 ...

  3. 使用Android模拟器调试linux内核

    使用Android模拟器调试linux内核 为什么需要调试linux内核 如何在Android上调试内核 开发环境 创建模拟器 下载goldfish内核源码 编译goldfish内核 编译内核遇到的问 ...

  4. android 4.4 linux 内核版本,稳定内核版本和更新  |  Android 开源项目  |  Android Open Source Project...

    由于之前的内核开发模型(每 2-3 个月发布一次新版本)被认为无法满足大多数用户的需求,Linux 内核稳定版模型于 2005 年随之诞生.用户希望实际用到在 2-3 个月内提交的错误修复程序,但 L ...

  5. linux内核与Linux发行版本区别

    linux内核:Linux内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层.硬盘及文件系统控制及多任务功能的系统核心程序. linux发行版本:Linux发行版就是由Linux内核 ...

  6. linux内核 thread,Linux内核线程kernel thread详解

    内核线程 为什么需要内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求). 内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的. 内核线程 ...

  7. 一文看懂Linux内核!Linux内核架构和工作原理详解

    linux内核相关视频解析: 5个方面分析linux内核架构,让你对内核不再陌生 90分钟了解Linux内存架构,numa的优势,slab的实现,vmalloc的原理 手把手带你实现一个Linux内核 ...

  8. 【Linux内核】Linux内核介绍

    Linux学习内核思路 学习过程: Linux内核引导及如何初始化 进程管理.内存管理 内核引导及过程: CPU通电后,首先执行引导程序,引导程序把内核加载到**内存,**然后执行内核,内核初始化完成 ...

  9. 深度:一文看懂Linux内核!Linux内核架构和工作原理详解

    简介 作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址.目前支持模块的动态装卸(裁剪).Linux内核就是基于这个策略实现的.Linux进程1.采用层次结构,每个 ...

最新文章

  1. mysql中增加45天三小时_MySQL查询以45天为间隔添加天数并在新列中显示输出
  2. 灰色条怎么写_货车司机必须牢记的5条驾驶经验,最后一个能做到的人不多
  3. 分享一套 python 试题
  4. html5表单新增的输入类型,HTML5之表单新增类型介绍
  5. 《看聊天记录都学不会C语言?太菜了吧》(15)你学了一节课的函数我5分钟搞定了,还很熟
  6. 一个简单的python日志服务器
  7. Object(包装对象)
  8. 【nodejs原理源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
  9. Version Control
  10. myEclipse中的web项目直接引入到eclipse中运行
  11. 开始菜单下的计算机怎么能看到盘符
  12. python多进程_python学习笔记:多进程
  13. Windows10桌面优化 | 如何修改图标大小 | 如何把win10快捷方式小箭头去掉
  14. 2019 高教社杯数模竞赛A题 高压油管的压力控制 题解
  15. 转:网页游戏都有哪些安全问题
  16. pytorch拼接与保存图片
  17. .rs是什么计算机语言,这几句计算机语言是什么意思Dim cnn As ADODB.ConnectionDim rs As ADODB.Reco...
  18. 华为鸿蒙手机什么时候上市5g,5g手机什么时候上市 华为5g手机何时上市?
  19. Qt3D 接口整体介绍 [好]
  20. 大学认可的一类出版社目录

热门文章

  1. Day14作业 一、完成下面的要求? 先创建一个工人类,属性:姓名,年龄,工资
  2. linux 下 apache启动、停止、重启命令
  3. 16g版nexus5 升级带android 4.4,Nexus 5升级如何Android 4.4.1 Nexus 5升级到4.4.1方法教程
  4. js 设备条形码字体_蚌埠食品袋激光打码机设备-青岛博泰格睿特
  5. [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析
  6. [网络安全自学篇] 五十一.恶意样本分析之HGZ进程和网络行为动态分析及防御
  7. 【数据结构与算法】之深入解析“分数加减运算”的求解思路与算法示例
  8. 37. Sudoku Solver
  9. 征战蓝桥 —— 2013年第四届 —— C/C++A组第10题——大臣的旅费
  10. 【Linux网络编程】组播