Android系统架构图学习

来源:互联网 发布:阿里云发票 编辑:程序博客网 时间:2024/06/05 06:27

Android系统架构图

Android采用分层的系统架构,由下往上,分别如下

  1. linux内核层
  2. 硬件抽象层
  3. 系统运行时库层
  4. 列表内容
  5. 应用程序框架层
  6. 应用程序层

这里写图片描述


Linux操作系统内核

Android以Linux操作系统内核为基础,实现以下核心系统功能。

  1. 硬件设备驱动
  2. 进程和内存管理
  3. 网络协议栈
  4. 电源管理

除此以外,Android还增加了一些面向移动设备的特有功能

  1. 低内存管理LMK(Low Memory Killer)
  2. 匿名共享内存(Ashmem: Anonymous Shared Memory)
  3. 进程间通信Binder机制

这些功能的增强,进一步提升了Android在内存管理、进程间通信等方面的安全性。


硬件抽象层产生原因

Android之前的版本,并不存在硬件抽象层。鉴于硬件厂商并不希望公开其设备驱动的源代码,Google对此将Linux内核驱动程序进行封装,屏蔽掉底层的实现细节,向上提供统一的接口,这就是硬件抽象层。


硬件抽象层

HAL(Hardware Abstraction Layer)

HAL规定了一套应用层对硬件层的读写和配置的统一接口,本质上是将硬件的驱动分为用户空间和内核空间,其中内核驱动程序运行在内核空间,HAL运行在用户空间。下图中的Stub,以so库的形式存在,可以理解为proxy。上层通过调用标识获得HAL的相关Stub,进而取得相应操作。
这里写图片描述


系统运行时库层

系统运行时库,由系统类库Android运行时构成。
系统类库,基本上用C/C++编写

基本功能说明如下:
系统运行时库层的功能说明


Android NDK(Native Development Kit)

使得应用程序可以不依赖Dalvik虚拟机进行开发。

Android运行时核心库提供android.os, android.net, android.media等核心API,而Dalvik虚拟机依赖Linux内核,实现进程隔离与线程调度管理、安全与异常管理、垃圾回收等功能,并被改进以适应低内存、低处理器速度的移动设备环境。


应用程序框架层

一系列的Android应用程序所需的类库

作用:

  1. 使得开发人员可以快速地进行程序开发
  2. 可以通过继承实现个性化的扩展。

举例:
如Activity Manager负责主线程ActivityThread的创建、Activity生命周期的维护,并为窗口提供交互的接口。


应用层

与用户直接交互的应用程序

如SMS短信、图片浏览器、地图以及开发人员所开发的应用程序。

0 0