Android系统架构

Android系统架构总体可分为四层结构,从下往上依次是:Linux内核层、系统运行库层、应用程序框架层以及应用程序层。如下图所示:

 

一、Linux内核层

       Google选择了Linux内核作为Android的底层支撑系统。当前的Android系统是基于Linux2.6内核的,提供了一个操作系统所应该具有的最基本的功能。

       当然,除了标准的Linux内核外,Android还额外增加了适合手机的内核驱动程序:显示驱动、摄像头驱动、闪存驱动、Binder(IPC)驱动、键盘驱动、 WiFi驱动、音频系统驱动、蓝牙驱动、电源管理等。

 二、系统运行库层:

        Android系统运行库层主要分为系统库和Android运行时环境两部分。

        系统库:   
        系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要包含以下几个部分:
        Surface Manager:执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。 
        Media Framework:多媒体库,支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H264、AAC、ARM。
        SQLite:轻量级的关系型数据库引擎。 
        OpenGL|ES:根据OpenGL ES 1.0 API标准实现的3D绘图函数库。 
        FreeType:提供点阵字与向量字的描绘与显示 。
        WebKit:开源的浏览器引擎,支持CSS,JAVASCRIPT,DOM等脚本语言
        SGL:底层的2D图形渲染引擎 
        SSL:在Andorid上通信过程中实现安全认证
        Libc:从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制

        Android运行时环境(Run Time Context)

        Android应用程序采用Java语言编写,程序在Android运行时环境中执行,运行时环境可分为核心库和Dalvik虚拟机两部分。

        核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。

        Dalvik虚拟机是由Google公司自己设计专门用于Android平台的Java虚拟机,它针对移动终端做了特殊的优化。Dalvik虚拟机具有一下几个特征:

        1)专有的DEX文件格式
        一个应用中可以定义很多类,编译完成后即会有很多相应的CLASS文件,CLASS文件内会有不少冗余的信息;而DEX文件格式会把所有的CLASS文件内容整合到一个文件中。这样,除了减少整体的文件尺寸,I/O操作,也提高了类的查找速度。原来每个类文件中的常量池,在DEX文件中由一个常量池来管理,而且DEX文件的结构非常紧凑。

        2)一个应用,一个虚拟机实例,一个进程
        每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。虚拟机的线程机制,内存分配和管理等等都是依赖底层操作系统实现的。所有Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制。不同的应用在不同的进程空间里运行,对不同来源的应用都使用不同的Linux用户来运行,可以最大程度的保护应用程序的安全和独立运行特性。
       在Android系统中,Zygote 是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个 Android应用程序时,Zygote就会孵化(FORK)出一个子进程来执行该应用程序。Zygote进程是在系统启动时产生的,它会完成虚拟机的初始化,资源库的加载,预置类库的加载和初始化等操作,而在系统需要一个新的虚拟机实例时,Zygote通过复制自身,最快速的提供给系统。

        3) 基于寄存器
        Dalvik虚拟机是基于寄存器的,相对于基于堆栈的虚拟机实现,基于寄存器的虚拟机实现虽然在硬件通用性上要差一些,但是它在代码的执行效率上却更胜一筹。在基于寄存器的虚拟机里,可以更为有效的减少冗余指令的分发和减少内存的读写访问。

 三、应用程序框架层

        应用程序框架层是开发者从事Android应用开发的基础,很多核心应用程序也是通过这一层来实现其核心功能,该层简化了组件的重用,开发人员可以直接使用它提供的组件进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。
       以下是这次层中,各个部分的功能:
        Activity Manager(活动管理器):管理各个应用程序生命周期以及通常的导航回退功能
        Window Manager(窗口管理器):管理所有的窗口程序
        Content Provider(内容提供器):通过它可以在不同应用程序之间存取或者分享数据
        View System(视图系统):构建应用程序的基本组件
        Notification Manager(通知管理器):通过它应用程序可以在状态栏中显示自定义的提示信息
        Package Manager(包管理器):Android系统内的程序管理,可以查看Android应用程序以及Activity的相关信息
        Telephony Manager(电话管理器):管理所有的移动设备功能
        Resource Manager(资源管理器):提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件,主题样式,二进制文件等
        Location Manager(位置管理器):提供位置服务
        XMPP Service(XMPP服务):提供Google Talk服务 

四、应用程序层

        Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是用Java语言编写,并且都是可以被开发人员所开发的其他应用程序替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。
       用户开发的Android应用程序和Android的核心应用程序是同一层次的,它们都是基于Android的系统API构建的。

转载于:https://www.cnblogs.com/pengxiaoli/archive/2013/01/12/2857606.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

门禁系统服务器 控制器 读卡器,你知道门禁系统读卡器分为多少种吗?

门禁系统用的非接触IC 卡( 感应式 IC 卡 ) 读卡器是门禁系统的重要组成部分 , 是门禁系统信号输入的关键设备 , 关系着整个门禁系统的稳定性 。读卡器以固定频率向外发出电磁波,频率一般是13.56MHZ,当感应卡进入读卡器电磁波辐射范围内时,会触…

mounted钩子函数_Vue 探索之路——生命周期和钩子函数的一些理解

对于执行顺序和什么时候&#xff0c;下面我们将结合代码去看看钩子函数的执行<!DOCTYPE html> <html> <head><title></title><script type"text/javascript" src"https://cdn.jsdelivr.net/vue/2.1.3/vue.js"></sc…

梯度化一张图片

最近刚好学习到梯度方面的知识&#xff0c;所以上网查找了下关于梯度化一副图片的opencv代码&#xff0c;参考代码出自http://www.cnblogs.com/gnuhpc/archive/2012/06/28/2568755.html #include<stdio.h> #include<cv.h> #include<highgui.h> #include<m…

逃跑吧少年服务器临时维护中,逃跑吧少年—逃跑吧少年5月30日更新 主动技能解锁...

逃跑吧少年—逃跑吧少年5月30日更新 主动技能解锁发表时间&#xff1a; 2019-05-31 作者&#xff1a;7k7k电脑版《逃跑吧&#xff01;少年》服务器将于5月30日9:00-11:00进行服务器维护工作&#xff01;请少年们安排好游戏时间&#xff0c;在维护前下线&#xff0c;以免造成…

graphpad导出图片不居中_从GraphPad Prism一键导出满足期刊要求的图表

众所周知&#xff0c;每个期刊都有自己对论文格式的规则&#xff0c;其中对图表的格式也有具体的规则。为减少发表所需的时间&#xff0c;GraphPad Prism允许您自定义导出&#xff08;文件类型、分辨率、透明度、尺寸、色彩空间 RGB/CMYK&#xff09;图表&#xff0c;以满足期刊…

云服务器 怎样修改地域,云服务器 怎样修改地域

云服务器 怎样修改地域 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、…

python 除数总是提示为0_python负数求余不正确?——取模 VS 取余

前天小王同学正在leetcode兴致勃勃的刷题&#xff0c;用java写了一版后又习惯性的用python写了一版&#xff0c;代码逻辑完全一样&#xff0c;但提交答案后居然提示【解答错误】&#xff01;经过反复调试&#xff0c;发现问题出在涉及求余的地方&#xff0c;python和java得出的…

qldump 备份所有表_MySQL中的备份和恢复是怎样执行的?

- 点击上方“中国统计网”订阅我吧&#xff01;-MySQL备份MySQL中的逻辑备份是将数据库中的数据备份为一个文本文件&#xff0c;备份的文件可以被查看和编辑。在MySQL中&#xff0c;使用mysaldump工具来完成备份。有以下3种来调用mysqldump&#xff1a;1. 备份指定的数据库&…

linux系统管理与服务器配置高志君_如何在 Linux 上安装、配置 NTP 服务器和客户端?...

你也许听说过这个词很多次或者你可能已经在使用它了。在这篇文章中我将会清晰的告诉你 NTP 服务器和客户端的安装。-- Magesh Maruthamuthu你也许听说过这个词很多次或者你可能已经在使用它了。在这篇文章中我将会清晰的告诉你 NTP 服务器和客户端的安装。之后我们将会了解 Chr…

8位可控加减法器_行测高分技巧-资料分析之有效数字加减法取舍

资料分析是我们行测试卷中得分率较高的一个部分&#xff0c;所以对资料分析这一部分的题目我们必须把握。但是做题过程中&#xff0c;考生碰到一些数字较大&#xff0c;列式复杂的题目&#xff0c;就无从下手&#xff0c;不知如何应对&#xff0c;今天陕西京佳教育就和各位考生…

3层vni vxlan_方便业务迁移,大型企业数据中心VXLAN大二层基础,一分钟了解下

一、VXLAN 简介(1)定义RFC7348 定义了 VLAN 扩展方案 VXLAN(Virtual eXtensible Local Area Network)。VXLAN 采用 MAC in UDP(User Datagram Protocol)封装方式&#xff0c;是 NVO3(Network Virtualization overLayer 3)中的一种网络虚拟化技术。(2)目的作为云计算的核心技术之…

设置dns_网络速度缓慢怎么办?轻松一键修改DNS设置让网速提升五倍

不知道大家有没有这种情况的发生&#xff0c;在家上网或者看智能电视&#xff0c;打开一个普通网页&#xff0c;明明自己办的是100M的宽带&#xff0c;结果慢得要死&#xff0c;还动不动弹出各种各样的广告&#xff0c;然后这时你又杀毒&#xff0c;又去清内存&#xff0c;结果…