android 系统架构简介
Android系统采取的是分层的架构,根据官方文档提供的架构图,我们将android的系统架构分成5层,如图:

1.Application Framework (应用框架)
application framework 是应用开发者使用最多的部分,作为一个应用开发者,我们大部分情况下都是在跟它打交道,
当然对于硬件开发者来说,要想更好的编写驱动程序,需要意识到developer api应尽可能地直接映射到硬件抽象层(HAL)接口上。
2.Binder IPC (绑定进程间通信)
绑定进程间通信机制允许应用框架(application framework)直接跨越进程边界去调用android的系统服务代码,也就是说,高级别的framework apis能够跟android的系统服务直接进行交互,当然这一切的通信对于开发者来说都是不可见的,我们只知道它在运行
3. System services (系统服务)
我们平时调用的应用框架的很多api都是通过跟系统服务进行交互来访问底层的硬件的。
这些基于android系统服务都是模块化的,聚焦在组件上,例如窗口管理器(window manager)、搜索服务(search Service)、通知管理器(Notification Manager).
在android系统中包含两组服务,一组是系统服务,例如窗口管理器和通知管理器,
另一组是媒体服务,用来调用播放和录制多媒体。
4. Hardware abstraction layer (HAL 硬件抽象层)
Android的硬件抽像层是能以封闭源码形式提供硬件驱动模块。HAL的目的是为了把Android framework与Linux kernel隔开,让Android不至过度依赖Linux kernel,以达成“内核独立”(kernel independent)的概念,也让Android framework的开发能在不考量驱动程序实作的前提下进行发展。
HAL stub是一种代理人的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数,并由Android runtime向HAL获取stub的操作,再回调这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即module ID,就可以获取操作函数。

5. Linux Kernel (Linux 内核)
android 的底层是基于linux内核的,当然在在这个版本中新增了诸如wake locks,binder ipc driver以及其他一些对于移动嵌入式平台很重要的一些功能
android 系统架构简介的更多相关文章
- Android系统架构(一)
		
一.Android系统版本简介 Android操作系统已占据了手机操作系统的大半壁江山,截至本文写作时,Android操作系统系统版本及其详细信息,已发生了变化,具体信息见下表,当然也可以访问http ...
 - Android系统架构说明介绍
		
Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...
 - LoadRunner系统架构简介
		
1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...
 - Android进阶(十一)Android系统架构讲解
		
如果说一个成功男人的背后会有一个默默支持的女人的话,那么一个优越稳定的平台背后必有一个成熟的系统架构所支撑着.那么,Android的系统架构是怎么样的呢?从下图我们可以从整体上有个大致的了解(图片来源 ...
 - Android进阶加密-第1章-Android系统架构-读书笔记
		
第 1 章 Android 系统架构 1.1 Android 系统架构 Android 系统架构分为五层,从上到下依次是应用层.应用框架层.系统运行库层.硬件抽象层和 Linux 内核层. 应用层(S ...
 - Android系统架构与系统源码目录
		
前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是<Android开发艺术探索>的姊妹篇.在这 ...
 - Android源码分析一 Android系统架构
		
一 Android系统架构 Linux内核层(Linux Kernel):Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动.音频驱动.照相机驱动 ...
 - 我收藏的技术知识图(每张都是大图)关于XX背后的知识、技术图,例如:Linux、Nginx架构、PHP知识卡、机会、HTML5移动、Android系统架构、YII架构的典型流程、Css知识表
		
我收藏的技术知识图(每张都是大图) HTML5Linux/Unix系统设计思想读书笔记 LinuxMVCJava线程MVCSpring MVCCSS3Nginx架构VimCliCommandsPHP知 ...
 - (转)android系统架构及源码目录结构
		
转自:http://blog.csdn.net/finewind/article/details/46324507 1. Android系统架构: android系统架构采用了分层架构的思想,如下图所 ...
 
随机推荐
- 关于CGI和FastCGI的理解
			
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器. 0.CGI的引入 在网站的整体架构中,Web Se ...
 - Unity 3D游戏-见缝插针源码
			
Unity见缝插针功能实现 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Sphere Rotatio ...
 - RequireJs 与 SeaJs的相同之处与区别
			
相同之处: RequireJS 和 Sea.js 都是模块加载器,倡导模块化开发理念,核心价值是让 JavaScript 的模块化开发变得简单自然. 不同之处: 定位有差异.RequireJS 想成为 ...
 - Spring学习--静态工厂方法、实例工厂方法创建 Bean
			
通过调用静态工厂方法创建 bean: 调用静态工厂方法创建 bean 是将对象创建的过程封装到静态方法中 , 当客户端需要对象时 , 只需要简单地调用静态方法 , 而不需要关心创建对象的细节. 要声明 ...
 - 【正则表达式】java应用正则表达式
			
一:简单应用 /** * * ' * & * ' * & * & * ' * ' * ' * sources=sdcg'hde&xyz'dfa&&ad' ...
 - js代码中碰到的函数
			
第一个--->字符串的截取substring()方法 substring(a,b)--->[a,b)区间截取字符.下标从0开始.从a下标开始,截取到b下标的前一个字符.返回一个新的字符串 ...
 - 关联容器map(红黑树,key/value),以及所有的STL容器详解
			
字符串或串(String)是由数字.字母.下划线组成的一串字符.一般记为 s=“a1a2···an”(n>=0).它是编程语言中表示文本的数据类型.在程序设计中,字符串(string)为符号或数 ...
 - prisma 服务器端订阅试用
			
graphql 协议是支持数据的实时订阅功能的(一般基于websocket 进行实现) prisma 支持客户端订阅以及服务器端订阅(类似webhook),可以方便将 数据推送后端服务 目的 pr ...
 - JVM 详解
			
概念 数据类型 Java 虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身:而引用类型的变量保存引用值.“引用值”代表了某个对象的引用,而不是对 ...
 - 使用Apriori进行关联分析(一)
			
大型超市有海量交易数据,我们可以通过聚类算法寻找购买相似物品的人群,从而为特定人群提供更具个性化的服务.但是对于超市来讲,更有价值的是如何找出商品的隐藏关联,从而打包促销,以增加营业收入.其中最经典的 ...