zoukankan      html  css  js  c++  java
  • Android内核和Linux内核的区别

    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目录

  • 相关阅读:
    《银光志Silverlight 3.0开发详解与最佳实践》出版电子版——风云编著
    Nigel Parker 40分钟视频演示了微软的 31 项技术(附下载)
    《银光志Silverlight 3.0开发详解与最佳实践》书搞目录
    Silverlight 2使用C#遍历XML(兼容Silverlight3)
    为什么要把Silverlight归入Web 2.0?
    Silverlight明年将占据互联网设备半壁江山
    Silverlight Tools 3.0中文正式版发布(附下载地址)
    银客帝国招聘Silverlight兼职开发人员
    再说招聘:学开车一定要摸方向盘
    Expression Blend 4 下载
  • 原文地址:https://www.cnblogs.com/xiongwei/p/8205425.html
Copyright © 2011-2022 走看看