android 为什么为选择Linux
- 强大的内存管理和进程管理方案
- 基于权限的安全模式
- 支持共享库
- 经过认证的驱动模式
- linux本身就是开源项目
android 不是linux - 它没有本地窗口系统
Linux用的X窗口系统, Mac 上OX X的Quartz
Android上并没有使用 - 它没有glibc的支持
采用了Google自己开发的一套Bionic Libc代替glibc - 它并不包括一整套标准的Linux使用程序
没有完全照搬Linux系统的内核;
修改了部分Linux的Bug,增加了不少内容,如基于ARM架构的Gold-Fish平台
以及Yaffs2FLASH文件系统 - 它增强了Linux以支持其特有的驱动
- Android Binder 基于OpenBinder框架的一个驱动,提供了android
平台间的进程通信功能, 源代码位于drivers/staging/android/binder.c - Android电源管理功能(PM) 一个基于标准备Linux电源管理系统轻量级Android
电源驱动管理,针对嵌入式设备做了很多优化。源码位于:
kernel/power/earlysuspend.c
kernel/power/userwakelock.c
kernel/power/wakelock.c
kernel/power/consoleearlysuspend.c
kernel/power/fbearlysuspend.c - 低内存管理 比Linux标准的OOM(Out of Memory)机制更加灵活,它可以根据需要
杀死进程以释放需要的内存。源代码位于drivers/staging/android/lowmemorykiller.c - 匿名共享内存(Ashmem) 为进程间提供大块共享内存,同时为内核提供回收和管理这个
内存的机制, 源码位于mm/ashmem.c - Android PMEM(Physical) PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备
只能工作在连续的物理内存上,源码位于drivers/misc/pmem.c - Android Logger一个轻量级的日志设备,用于抓取Android系统的各种日志,源代码位于
drivers/staging/android/logger.c - Android Alarm 提供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使有设备
睡眠时也会运行的时钟基准。源代码位于drivers/art/alarm.c - USB Gadget驱动, 一个基于标准Linux USB gadget驱动框架的设备驱动,Android USB驱动是基于
gaeget框架的,源代码位于drivers/usb/gadget - Android Ram Console,为了提供调试功能,Android允许将调试日志写入一个被称为RAM Console的
设备里,它是一个基于RAM的Buffer,源代码位于drivers/staging/android/ram_console.c - Android timed device 提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。源代码
位于drivers/staging/android/timed_output.c(timed_gipo.c)
Linux与Android之间的关系