当前位置:首页 > 开发 > 操作系统 > 正文

Android kernel code merged into mainline

发表于: 2012-01-12   作者:bookjovi   来源:转载   浏览次数:
摘要:     现在是Linux 3.3的merge window,android的kernel code终于被merge到mainline中了,记得这个问题在一年前就开始讨论android与mainline kernel的分化问题,毕竟android是桌面Linux使用最广泛的distribution版本,把android code merge到mainline中对Linux长期的发

    现在是Linux 3.3的merge window,android的kernel code终于被merge到mainline中了,记得这个问题在一年前就开始讨论android与mainline kernel的分化问题,毕竟android是桌面Linux使用最广泛的distribution版本,把android code merge到mainline中对Linux长期的发展也有好处,当然Google也不希望自己的kernel与mainline kernel越来越远(那样Google的kernel tree维护者会整天merge code,很繁琐)。

    现在merge进的subsystem有:

    ashmem:Anonymous Shared Memory Subsystem

config ASHMEM
        bool "Enable the Anonymous Shared Memory Subsystem"
        default n
        depends on SHMEM || TINY_SHMEM
        help
          The ashmem subsystem is a new shared memory allocator, similar to
          POSIX SHM but with different behavior and sporting a simpler
          file-based API.

    从ashmem代码中可以看出,ashmem的后台仍是通用的share memory

 

    binder:Android Binder IPC Driver

config ANDROID_BINDER_IPC
        bool "Android Binder IPC Driver"
        default n

    Binder在android中非常重要,基本上所有的跨进程通信(service间通信)都是用的binder机制。binder本质上是一种IPC,和fifo,msgqueue,shm一样运行在kernel空间。palm使用的也是openbinder。另一种mobile平台使用的IPC机制是DBUS,DBUS比binder更为人熟知,一般Fedora的机器都安装了dbus,而且时时运行着。

[root@localhost ipc]# ps aux|grep bus

dbus      1835  0.0  0.1  11212   716 ?        Ssl  Jan03   0:02 dbus-daemon --system

root     26552  0.0  0.1   4260   672 pts/1    S+   05:00   0:00 grep bus

 

    logger:Android log driver

    这个subsystem很简单,就是在/dev目录下创建了四个文件:

#define LOGGER_LOG_RADIO        "log_radio"     /* radio-related messages */
#define LOGGER_LOG_EVENTS       "log_events"    /* system/hardware events */
#define LOGGER_LOG_SYSTEM       "log_system"    /* system/framework messages */
#define LOGGER_LOG_MAIN         "log_main"      /* everything else */

    和syslog的7个等级差不多,android的logger实现也很简单,log放在ringbuffer中,ringbuffer的默认大小是256K

 

    lowmemorykiller:

config ANDROID_LOW_MEMORY_KILLER
        bool "Android Low Memory Killer"
        default N
        ---help---
          Register processes to be killed when memory is low

    lowmemorykiller是android中常用的的特性,iphone中也有相同的机制,当内存不够时系统会杀掉一些进程,我以前一直以为android用的是Linux mm的oom_killer,后来想一想应该不是,用Linux mm的oom_killer杀掉进程时系统应该反应已经非常迟钝了,注重用户响应速度的android不会等到那时才杀进程。

    lowmemorykiller的实现原理很简单(200LOC),向mm注册一个shrinker,当系统memory压力比较大时,kswapd会调用shrinker清理内存,用户可以配置一些memory threshold来控制lowmemorykiller的行为。

 

   pmem,ram_console,timed_gpio,timed_output,swich这几个subsystem牵涉到硬件层次比较多,暂未深入了解。

 

    Linux在3.3 merge window中还merge了GNU的mpilib库:

    config MPILIB

        tristate "Multiprecision maths library"
        help
          Multiprecision maths library from GnuPG.
          It is used to implement RSA digital signature verification,
          which is used by IMA/EVM digital signature extension.

config MPILIB_EXTRA
        bool "Multiprecision maths library - additional sources"
        depends on MPILIB
        help
          Multiprecision maths library from GnuPG.
          It is used to implement RSA digital signature verification,
          which is used by IMA/EVM digital signature extension.
          This code in unnecessary for RSA digital signature verification,
          and can be compiled if needed.

config DIGSIG
        tristate "In-kernel signature checker"
        depends on KEYS
        select MPILIB
        help
          Digital signature verification. Currently only RSA is supported.
          Implementation is done using GnuPG MPI library
 

 

 

Android kernel code merged into mainline

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1.wiki百科上的booting关于移动设备的描述 Some modern CPUs and microcontrollers (for example, T
Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本控制软件,它
具体编译android source和android kernle 的过程参考:http://my.oschina.net/u/561492/blog/89965
具体编译android source和android kernle 的过程参考:http://my.oschina.net/u/561492/blog/89965
下载Android源码简要流程 : a. 获取repo文件: curl http://commondatastorage.googleapis.com/git-r
下载Android源码简要流程 : a. 获取repo文件:curl http://commondatastorage.googleapis.com/git-re
Android 筆記-Linux Kernel SMP (Symmetric Multi-Processors) 開機流程解析 Part(1) Boot-Rom與UBo
最近学习android,总感觉看文档太慢,而且总是提不起学习的兴趣来,于是决定看api源码,然后试着做一些
学习了下FaceDetector这个类,感觉挺有意思的,图片脸部检测类,是以眼睛为中心检测的,由于android
学习罗老师,先上一张Kernel层向上发送消息处理流程的序列图,下面一点一点分析。 Step.17以前都在上
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号