Android Linux 内核介绍
ug ,以及一些蓝牙调试和访问控制相关的函数。
调度器 -- 5 files
Android内核还修改了进程调度和时钟相关策略,这个改动就比较深入了。其目的和效果估计在一段时间后才能找到。
为android 新增的功能 -- 28 files
除了修正一些bug 以及其他的改动, android 还增加了一些新的 “ 子系统 ” ,这些系统都比较重要。
IPC Binder
IPC Binder是一种 IPC( 进程间通信)机制。它是的进程能够为其他进程提供服务 —— 还是通过标准的 linux 系统调用 api 。 IPC Binder 的概念起源于一家叫做 “Be.Inc 的公司,在 Google 之前就已经被然后被用到 Palm 软件里去了。
Low Memory Killer
其实内核里已经有一个类似的功能, 叫做oom killer, 就是 out of memory killer, 当内存不够的时候,改策略会试图结束一个进程。不知道为什么 Google 重新实现了这个策略。
Ashmem
Ashmem,全程 Anonymous SHared MEMory, 翻译成中文就是匿名共享内存。这个功能使得进程间能够共享大块的内存。比如说,系统可以使用 Ashmem 保存一些图标,多个应用程序可以访问这个共享内存来获取图标。 Ashmem 为内核提供了一种回收这些使用完的共享内存块的办法 , 如果一个进程试图访问这些已经被回收的内存块,它将会得到错误的返回值,以便它重新进行内存块分配和数据初始化。
RAM Console and Log Device
为了调试方便,Android 添加了一个功能,使得调试信息可以输入到一个内存块中。此外, Android 添加了一个独立的日志模块,这样用户空间的进程能够读写日志消息,调试打印信息等。
Android Debug Bridge
嵌入式设备的调试的确比较麻烦。为了便于调试,google 设计了这个调试工具,可以叫做 ADB ,使用 USB 作为连接方式 ,ADB 可以看作是链接 android 的设备和 PC 机的一套协议。
Android 还添加了其他的东西,比如 real-time clock, switch , timed GPIO 。
Power Management -- 5 files
电源管理对于移动设备来说相当重要,也是最复杂,开发难度最高的一个功能。Google 添加了一个新的电源管理系统,并没有原先 apm,dpm 等。
其他修改 -- 36 files
除了上述改动之外,还有一些小改动,比如新增的额外的调试功能, 键盘背光控制,TCP 网络管理等等,共涉及 36 个文件。
根据上述,google 对标准的内核做了很大的改动。相比其他的项目,比如 Nokia N810,Openmoko 等项目中,内核的改动仅仅是增加了某个平台的支持。所以移植最快也是最可能的办法是在 google 使用的 kernel 上增加平台支持。
也有一些开发人员将google 对 2.6.25 内核的改动做成补丁,直接打在自己开发的内核上 —— 当然,自己的内核也应该是 2.6.25 ,否则会出问题。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/guoshaobei/archive/2010/08/21/5827399.aspx
Android是基于Linux,而Linux Kernel的目录结果如下:
浏览内核代码之前,有必要知道内核源码的整体分布情况,按照惯例,内核代码安装在/usr/src/linux目录下,该目录下的每一个子目录都代表了一个特定的内核功能性子集,下面针对2.6.23版本进行简单描述。
(1)Documentation。
这个目录下面没有内核代码,只有很多质量参差不齐的文档,但往往能够给我们提供很多的帮助。
(2)arch。
所有与体系结构相关的代码都在这个目录以及include/asm-*/目录中,Linux支持的每种体系结构在arch目录下都有对应的子目录,而在每个体系结构特有的子目录下又至少包含3个子目录。
kernel:存放支持体系结构特有的诸如信号量处理和SMP之类特征的实现。
lib:存放体系结构特有的对诸如strlen和memcpy之类的通用函数的实现。
mm:存放体系结构特有的内存管理程序的实现。
除了这3个子目录之外,大多数体系结构在必要的情况下还有一个boot子目录,包含了在这种硬件平台上启动内核所使用的部分或全部平台特有代码。
此外,大部分体系结构所特有的子目录还根据需要包含了供附加特性使用的其他子目录。比如,i386目录包含一个math-emu子目录,其中包括了在缺少数学协处理器(FPU)的CPU上运行模拟FPU的代码。
(3)drivers。
这个目录是内核中最庞大的一个目录,显卡、网卡、SCSI适配器、PCI总线、USB总线和其他任何Linux支持的外围设备或总线的驱动程序都可以在这里找到。
(4)fs。
虚拟文件系统(VFS,Virtual File System)的代码,和各个不同文件系统的代码都在这个目录中。Linux支持的所有文件系统在fs目录下面都有一个对应的子目录。比如ext2文件系统
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
