千家信息网

Android系统架构的演变历程是怎样的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Android系统架构的演变历程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Android是一种以Linux与JAVA为基础的
千家信息网最后更新 2026年11月03日Android系统架构的演变历程是怎样的

Android系统架构的演变历程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Android是一种以Linux与JAVA为基础的开放源代码操作系统。Android分为应用层、应用框架层、系统运行库层和Linux内核层。今天大家一起来大致回顾一下Android 系统架构的演变历程。

一、android和linux内核

Android是基于Linux内核的操作系统,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序。Android为什么会选择Linux?

1、强大的内存管理和进程管理方案

2、基于权限的安全模式

3、支持共享库

4、经过认证的驱动模型

5、Linux本身就是开源项目

Android对linux系统的改动主要有

(1)它没有glibc支持

由于Android最初用于一些便携的移动设备上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。

(2)它并不包括一整套标准的Linux使用程序

Android并没有完全照搬Liunx系统的内核,除了修正部分Liunx的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH文件系统(如果学习了嵌入式的话就会知道yaffs2 FLASH文件系统已经在基于linux的很多嵌入式设备上采用了,技术已经非常成熟)等。它没有本地基于X服务的窗口系统。什么是本地窗口系统呢?本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OX X的Quartz等。不同的操作系统的窗口系统可能不一样,Android并没有使用(也不需要使用)Linux的X窗口系统。

(3)Android专有的驱动程序

除了上面这些不同点之外,最重要的是,为了突出android特性,支持android设备,Android还对Linux设备驱动进行了增强,主要如下所示。

a、Android Binder 基于OpenBinder框架的一个驱动,用于提供 Android平台的进程间通信(InterProcessCommunication,IPC)功能。源代码位于drivers/staging/android/binder.c。

b、Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式设备做了很多优化。源代码位于:

kernel/power/earlysuspend.c

kernel/power/consoleearlysuspend.c

kernel/power/fbearlysuspend.c

kernel/power/wakelock.c

kernel/power/userwakelock.c

c、低内存管理器(Low Memory Killer) 比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程以释放需要的内存。源代码位于 drivers/staging/ android/lowmemorykiller.c。

d、匿名共享内存(Ashmem) 为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。源代码位于mm/ashmem.c。

e、Android PMEM(Physical) PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。源代码位于drivers/misc/pmem.c。

f、Android Logger 一个轻量级的日志设备,用于抓取Android系统的各种日志。源代码位于drivers/staging/android/logger.c。

g、Android Alarm 提供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。源代码位于drivers/rtc/alarm.c。

h、USB Gadget驱动 一个基于标准 Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的。源代码位于drivers/usb/gadget/。

i、Android Ram Console 为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。源代码位于drivers/staging/android / ram_console.c。

j、Android timed device 提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。源代码位于drivers/staging/android /timed_output.c(timed_gpio.c)。

k、Yaffs2 文件系统 Android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2能使用更小的内存来保存其运行状态,因此它占用内存小。Yaffs2的垃圾回收非常简单而且快速,因此能表现出更好的性能。Yaffs2在大容量的NAND Flash上的性能表现尤为突出,非常适合大容量的Flash存储。

二、最新的Android系统分为五层六区(域)

1、Linux内核层(Linux Kernel):Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等;

2、硬件抽象层(android hardware abstraction layer):安卓驱动硬件的方式与Linux不尽相同。传统Linux的驱动完全存活于内核空间。Android则在内核外部增加了硬件抽象层(HAL, Hardware Abstraction Layer) ,把一部分驱动功能放到HAL层中。安卓为什么费尽麻烦增加一个HAL呢?为了保护源代码。Linux内核采用了GPL协议,所以硬件生产商想要支持Linux系统,必须遵照GPL协议公开硬件驱动的源代码。但这些源代码中包含有许多硬件的设计信息,牵涉到硬件生产商的核心利益。而增加了HAL层之后,硬件厂商就不需要开放所有的驱动代码了。

3、系统运行库层(libraries):这一层通过一些C/C++库(so库)来为Android系统提供了主要的特性支持。如SQLite库提供了数据库支持,OpenGL ES库提供了3D绘图支持,Webkit库提供了浏览器内核支持等;

4、应用框架层(application framework):这一层主要提供构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可通过使用API来构建自己的应用程序;应用层(applications):这一层主要用于手机应用的安装,如系统自带联系人、短信等程序,或是第三方应用程序。

以上为五层五区,还有一个区域是存在于libraries层的Android运行时库(Android Runtime),它主要提供一些核心库,能够允许开发者使用Java语言来编写Android应用。另外Android运行时库中还包含了Dalvik虚拟机,它使得每一个Android应用都能运行在独立的进程中,且拥有一个自己的Dalvik虚拟机实例。相较于Java虚拟机,Dalvik是专门为移动设备定制的,它针对手机内存、CPU性能有限等情况作了优化处理。 每个Android应用都运行在自己的进程上,享有Dalvik虚拟机为它分配的专有实例。为了支持多个虚拟机在同一设备上高效运行,dalvik被改写过。Dalvik虚拟机执行的是Dalvik格式的可执行文件(.dex)-该格式经过优化,以将内存好用降到最低。

三、Dalvik虚拟机 和代码编译

安卓的应用是由Java编写的,而包括HAL在内的Linux的库都是由C/C++编写的,这个落差由Dalvik虚拟机衔接的。当一个应用运行时,进程空间内将包含一个Dalvik虚拟机。Java程序编译为字节码文件,运行在Dalvik虚拟机中。根据Java代码中的要求,Dalvik通过JNI(Java Native Interface)调用底层的C/C++编写的功能。JNI是从Java中调用C/C++模块的接口。由于上层接口的标准化,字节码可以畅通无阻的跨平台运行。

Dalvik虚拟机内部是一个"虚拟"进程空间,有自己的栈和堆,管理代码的运行流程。如果这以"虚拟"进程空间不足,Dalvik内建的垃圾回收(garbage collection)机制会自动清空堆上不再使用的对象。自动的垃圾回收简化了程序员的工作,但速度较慢。手动内存管理效率高,但需要更多的编程,且容易犯错。

Android的4种文件类型Java,class,dex,apk

Class文件------Java编译后的目标文件不像J2se,java编译成class就可以直接运行,android平台上class文件不能直接在android上运行。 由于Google使用了自己的Dalvik来运行应用, 所以这里的class也肯定不能在AndroidDalvik的java环境中运行, android的class文件实际上只是编译过程中的中间目标文件,需要链接成dex文件后才能在dalvik上运行

Dex文件-----Android平台上的可执行文件Android虚拟机Dalvik支持的字节码文件格式Google在新发布的Android平台上使用了自己的Dalvik虚拟机来定义, 这种虚拟机执行的并非Java字节码, 而是另一种字节码: dex格式的字节码。在编译Java代码之后,通过Android平台上的工具可以将Java字节码转换成Dex字节码。虽然Google称Dalvik是为了移动设备定做的,但是业界很多人认为这是为了规避向sun申请Javalicense。这个DalvikVM针对手机程式/CPU做过最佳化,可以同时执行许多VM而不会占用太多Resource。

Apk文件-------Android上的安装文件Apk是Android安装包的扩展名,一个Android安装包包含了与某个Android应用程序相关的所有文件。apk文件将AndroidManifest.xml文件、应用程序代码(.dex文件)、资源文件和其他文件打成一个压缩包。一个工程只能打进一个.apk文件。

看完上述内容,你们掌握Android系统架构的演变历程是怎样的的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

系统 文件 驱动 设备 应用 运行 源代码 内存 内核 程序 支持 管理 硬件 进程 字节 代码 平台 功能 应用程序 标准 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技工作委员会主任 互联网科技工作委员会毛军 科技服务与互联网 北京互联网络科技有限公司 致聘互联网科技 互联网科技logo设计 互联网科技英文翻译 四个字互联网科技公司取名 顺网科技2021年互联网排名 互联网教育科技公司vipkid 承德科技产业互联网发展 荆州市昕露互联网络科技有限公司 湖南一路畅行互联网科技 互联网5g黑科技有哪些 厦门江牛科技互联网 互联网科技融合创新 陕西云淼互联网科技公司 易企秀互联网科技是做什么的 互联网科技企业商标注意事项 互联网科技创新方面的资料 互联网金融科技 中智农互联网科技 云之行互联网科技 赫美联合互联网科技 中国科技互联网公司收入 互联网媒体平台算高科技产业 锡山区互联网智能科技产品供应 2021世界互联网领先科技成果发布 互联网科技的前景 承德科技产业互联网平台
0