白话Android系统架构

Android采用层次化系统架构,Android由底层往上分为4个主要功能层,分别是Linux内何层,系统运行时库层,应用程序框架层和应用程序层。

Linux内核层

Android以Linux操作系统内核为基础,借助Linux内核服务实现硬件设备驱动,进程和内存管理,网络协议栈,电源管理,无线通信等核心提醒功能。

Android内核对Linux内核进行了增强,增加了一些面向移动计算的特有功能。例如,低内存管理器LMK,匿名共享内存以及轻量级的进程间通信Binder机制等。这些内核的增强使Android在继承Linux内核安全机制的同时,进一步提升了内存管理,进程间通信等方面的安全性。

Android核心驱动模块如下:

 

 

硬件抽象层(HAL)

鉴于许多硬件设备厂商不希望公开其设备驱动的源代码,如果能将Android的应用框架层与Linux操作系统内核的设备驱动隔离,使应用程序框架的开发尽量独立于具体的驱动程序,则Android将减少对Linux内核的依赖。HAL由此而生,它是对Linux内核驱动程序进行的封装,将硬件抽象化,屏蔽掉了底层的实现细节。HAL规定了一套应用层对硬件层读写和配置的统一接口,本质上就是将硬件的驱动分为用户空间和内核空间两个层面:Linux内核驱动程序运行于内核空间,硬件抽象层运行于用户空间。

如下为HAL的STUB,以共享库*.so的形式存在,实际上可以理解为proxy(代理)。HAL包含了一系列STUB,用于封装操作。因此,对于应用框架层而言,无需直接调用*.so,而是通过调用标志(module ID)获得HAL的相关STUB,进而取得操作。HAL通过抽象的接口访问具体操作,统一了上层应用对设备驱动的调用方式:

 

系统运行时库层

位于Linux内核层之上的系统运行时库层是应用程序框架的支撑,为Android系统中的各个组件提供服务。系统运行库层由系统中的各个组件提供服务。系统运行时库层由系统类库Android运行时构成:

系统类库

系统类库大部分由C/C++编写,所提供的功能通过Android应用程序框架为开发者所使用,主要的系统类库如下:

除上述列表的主要系统类库之外,Android SDK即Android原生库,也十分重要,NDK为开发者提供了直接使用Android系统资源,并采用C或者C++语言编写程序的接口。因此,第三方应用程序可以不依赖Dalvik虚拟机进行开发。

使用原生库无法访问应用框架层API,兼容性可能无法保障。而且从安全性角度考虑,Android原生库用非类型安全的程序语言C/C++编写,更容易产生安全漏洞,原生库的缺陷也可能更容易直接影响应用程序的安全性。

Android运行时

Android运行时包含核心库和Dalvik虚拟机两部分

核心库

核心库提供了Android的核心API,如android.os,android.net,android.media等等。

Dalvik虚拟机

Dalvik虚拟机依赖于Linux内核,实现进程隔离与线程调度管理,安全和异常管理,垃圾回收等重要功能。

 

应用程序框架层

应用程序框架层提供开发Android应用程序所需的一系列类库,使开发人员可以进行快速的应用程序开发,方便重用组件,也可以通过继承实现个性化的扩展:

应用程序层

Android平台的应用层包含各类与用户直接交互的应用程序,或由Java语言编写的运行于后台的服务程序。例如SMS短信,电话拨号,图片,日历等等,以及开发人员开发的其它应用程序,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值