图片:
Android操作系统架构
Android 是运行于 Linux kernel之上,但并不是GNU Linux。因为在一般GNU/Linux 里的功能,Android 大都没有支持,包括Cairo, X11, Alsa, FFmpeg, GTK, Pango, Glibc等都移除掉了。Android又以bionic 取代Glibc, 以Skia 取代Cairo, 再以opencore 取代FFmpeg 等等。Android 为了达到商业应用,必须移除关于GNU Copyleft 的限制,例如Android将驱动程序移到 userspace,使得Linux driver 与 Linux kernel彻底分开。
目前Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Managemeat),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。
一、Linux Kernel内核层
包含了显示驱动、摄像头驱动、蓝牙驱动、闪存驱动、IPC管道通讯驱动、USB串口驱动、键盘驱动、Wifi无线驱动、音频驱动和电源管理驱动,当然最下层是Linux系统核心驱动主要协调CPU处理和内存管理。
二、Libraries系统库
Surface Manger管理库、媒体播放库、SQLite数据库引擎、OpenGL ES图形引擎、FreeType引擎、Webkit浏览器引擎、SGL图形引擎、SSL安全套接字层引擎、Libc库以及Android Dalvik虚拟机运行库。
三、应用程序框架库
这个层面主要是系统管理类库,设计Activity Manger显示管理、Windows Manger窗口管理、Content Providers内容提供、View System显示系统基类、Notification Mnager消息通知、Package Manger程序包管理、Telphony Manger电话管理、Rescource Manger资源管理、Location Mnager定位管理和XMPP服务。最终通过这些管理类开发出实际的程序,如Home桌面、Contacts联系人、Phone拨打电话、Browser浏览器等
最终的Android系统框架图如下: