Android 的核心系统服务基于Linux 2.6
内核,如安全性、
内存管理、
进程管理、
网络协议栈和驱动模型等都依赖于该内核。
Linux内核同时也作为硬件和软件栈之间的抽象层。
产品简介
Android是在
Linux内核的基础上构建的,Android的内核属于Linux内核的一个分支,它并不
GNU/Linux,因为一般在GNU/Linux中被支持的功能,在Android大多没有被支持。众所周知,
Linux是一个开源的
操作系统,由非营利的组织——
Linux基金会所管理。虽然Linux是
开源的,但是Android必须在
GNU GPL(用于保护开源软件的一个授权规范)的许可下使用Linux的
源码,才可以商用。所以为了达到商业应用的目的,Android必须去除被GNU GPL所约束的部分。Android去除了
Cairo、X11、
Alsa、
FFmpeg、
GTK、
Pango和
Glibc等,并以Bionic取代Glibc、以
Skia取代Cairo、以
Opencore取代FFmpeg等。Android并没有用户空间驱动,而是将所有的驱动都放在内核空间中,并以HAL隔开版权问题。
目前,Android的Linux内核层包括安全管理、内存管理、进程管理、网络阶议栈、驱动程序模型和电源管理等,这些都依赖于Linux内核。由于Linux内核全部使用
C语言编写,所以
Android的Linux内核层也全部是用C语言编写的。
主要功能
硬件驱动
Linux内核层提供了几乎所有手机、平板电脑相关设备的
驱动程序,实现系统与各种硬件的通信,如显示屏、摄像头、内存、键盘、无线网络、音频设备、电源等组件。
主要的驱动如下所示:
1、显示驱动(DisplayDriver):基于Linux的帧缓冲(FrameBuffer)驱动。
2、键盘驱动(KeyBoardDriver):作为输入设备的键盘驱动。
3、
Flash内存驱动(FlashMemoryDriver):基于MTD的Flash驱动程序。
4、照相机驱动(CameraDriver):常用的基于Linux的v4l2(VideoforLinux)驱动。
5、音频驱动(AudioDriver):常用的基于ALSA(AdvancedLinuxSoundArchitecture)的高级Linux声音体系驱动。
6、蓝牙驱动(BluetoothDriver):基于IEEE802.15.1标准的无线传输技术。
7、WiFi驱动:基于IEEE802.11标准的驱动程序。
8、Binder IPC驱动:Android的一个特殊的驱动程序,具有单独的设备节点,提供
进程间通信的功能。
9、PowerManagement(
电源管理):比如电池电量等。
内存管理
Linux内核层还提供系统内存管理,实现对所有可用的内存进行统一编码管理,定义一整套内存定位,使用与回收的策略,提供了低内存管理器(Low Memory Killer)策略,Android系统可以根据系统运行资源情况,自动决定是否需要杀死进程来释放所需要的内存。Linux内核层还提供了匿名共享内存(ashmem)机制,系统为进程间提供大块
共享内存,同时为内核提供回收和管理内存机制。另外,针对DSP和某些设备只能工作在连续的
物理内存要求,系统内核层提供了Android PMEM机制解决了向用户空间提供连续的物理内存区域的问题。
进程管理
实现管理进程的创建与销毁,管理进程间的通信,解决与避免死锁问题等。Android系统的进程间通信基于
Binder机制实现,一个进程可以非常方便地实现跨进程调用一个进程所提供的功能,并获取返回的执行结果。
系统管理
Android平台采用
Yaffs2作为MTD nand flash文件系统,Yaffs2使用更小的内存来保存它的运行状态,其垃圾回收机制非常简单快速,在大容量的NAND Flash上性能表现尤为突出。
电源管理
Android电源管理,一个基于标准Linux
电源管理系统的轻量级的Android
电源管理驱动,针对嵌入式设备做了很多优化。
USB管理
Android的USB驱动是基于Gaeget框架的,USB Gadget驱动是一个基于标准Linux USB gadget驱动框架的设备驱动。