A Part Of Android OS
[来自我毕业论文的一部分,实际上是来自Google搜索结果的一部分,囧]
4.1 Android体系结构研究
从下至上android操作系统分成四个层次结构:
第一层:Linux操作系统及驱动程序
第二层:本地代码框架(C/C++)
第三层:Java框架(Framework)
第四层:Java应用程序
Android的第一层由c语言实现,是由linux标准内核和android私有内容构成的。第二层的实现中既有c又有c++的成分,这一层中的本地代码来自linux开源社区和第三方提供者以及各大设备厂商。
4.2 Android的Linux内核和驱动程序
Android使用的是标准的linux2.6的内核作为其操作系统。随着android发布的版本的升级,android使用的linux内核也随之进行了升级。各发布版本的内核使用情况如下:
Android 1.0 - Linux 2.6.25
Android 1.4 - Linux 2.6.27
Android 1.5 - Linux 2.6.29
Linux Kernel在Android源代码中的目录为kernel。Android的内核结构和标准的linux内核结构基本相同,主要增加了一些驱动程序。这些驱动程序又分为android专用驱动和android设备驱动。
Android专用驱动程序:
Android中有一些驱动程序提供辅助操作系统的功能,这些驱动程序不是linux系统的标准驱动,他们一般不操作实际的硬件设备,只是辅助操作系统运行。主要的android专用驱动程序如下所示:
Ashmen:匿名共享内存驱动。其含义是匿名共享内存(Anonymous Shared Memory),通过这种内核的机制,可以为用户空间的程序提供内存分配机制。Ashmen设备节点名称为/dev/ashmen,主设备号为10(Misc Driver),次设备号动态生成。Ashmen驱动程序在内核中的头文件和代码路径如下:
Kernel/include/linux/ashmen.h
Kernel/mm/ashmen.c
在用户空间C linutil对Ashmen进行封装并提供接口。
Binder:Android的binder驱动程序为用户提供IPC(进程间通信)机制的支持,android整个系统的运行都依赖于binder驱动。Binder驱动的设备节点名称为/dev/binder。主设备号为10(Misc Driver),次设备号动态生成。Binder驱动程序在内核中的头文件和代码路径如下:
Kernel/include/binder.h
Kernel/drivers/misc/binder.c
在用户空间libutil公交卡和Service Manager守护进程中调用Binder接口提供对整个系统的支持。
Logger:Android的Logger驱动程序为用户提供log支持,这个驱动做为一个工具来使用,在用户空间中Logger有三个设备节点:
/dev/log/main,
/dev/log/event,
/dev/log/radio
主设备号为10(Misc Driver),次设备号动态生成。Logger在内核中的头文件和源码的位置如下所示:
Kernel/include/logger.h
Kernel/drivers/misc/logger.c
在android用户空间中logcat程序调用Logger驱动程序来为用户输入log信息。


















