Android面试准备:Android的系统架构简述

16 篇文章 2 订阅
7 篇文章 0 订阅


前言

了解和学习Android的五层架构体系,加深自己对Android理解,为更好地工作做准备。

一、Android系统架构体系总述

了解一下Android的系统架构,不仅能帮助我们更好地理解Android系统是怎样工作的,也可以帮助我们更清楚地梳理工作需求,让我们能够在看岗位招聘要求的时候拥有更清楚的认知hhh,下面我们一起来看一下Android系统架构图。
Android堆栈图
过去我们总说Android有四层架构,包括现在很多市面上出版的相关学习书籍也是收录了四层架构,这其实是忽略了硬件工作的那一层。本文从Android官网的经典五层架构图出发进行阐述与分析。

从图中我们可以看到,在Android架构中,从下往上依次为Linux内核、HAL、系统Native C++库和ART、Framework框架层和应用层这五层。

二、分层分析

1.Linux内核层

(1)Drivers:Android系统是基于Linux内核的,这一层存在的意义之一也为Android设备的各种硬件提供底层的驱动,借鉴上方的架构图,这一层为HAL层提供了各种驱动。

(2):但我们同样注意到,Driver那些驱动是被Linux Kernel这一层包裹起来的,在Linux Kernel这一层中,除了Drivers那些驱动,还有Power Management这一存在。

在谷歌这一架构图中,将Power Management这一层包裹在Linux Kernel中,但在一些其他的说明图,也有将Power Management分隔开来,其中PowerManagement的Loader层,用于启动Android系统前的一些准备。
在这里插入图片描述
在上幅图片中,我们可以更清楚地看到Loader层,或者说PowerManagement这一层做了一些开启Linux Kernel前的一些准备工作,来简要说说这一情况:

  • Boot ROM: 当手机处于关机状态时,长按Power键开机,引导芯片开始从固化在ROM里的预设代码开始执行,然后加载引导程序到RAM;

  • Boot Loader:这是启动Android系统之前的引导程序,主要是检查RAM,初始化硬件参数等功能。

(3)Linux Kernel:Android平台的基础是Linux内核,比如ART虚拟机最终调用底层Linux内核来执行功能。Linux内核的安全机制为Android提供相应的保障,也允许设备制造商为内核开发硬件驱动程序。

在内核安全中,相关守护进程、进程管理、内存管理则显得尤为重要,以下是Linux Kernel中的进程说明:

启动Kernel的swapper进程(pid=0):该进程又称为idle进程, 系统初始化过程Kernel由无到有开创的第一个进程, 用于初始化进程管理、内存管理,加载Display,Camera Driver,Binder Driver等相关工作;

启动kthreadd进程(pid=2):是Linux系统的内核进程,会创建内核工作线程kworkder,软中断线程ksoftirqd,thermal等内核守护进程。kthreadd进程是所有内核进程的鼻祖。

2.HAL(硬件抽象层)

这一层针对的并不是真实存在安装在手机上的那些硬件设施,而是为上层API 框架提供合适的接口,显示其硬件功能,HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

HAL分为两类HAL

  • 绑定式HAL
  • 直通式HAL

前者为新版的HAL,在绑定式HAL中,Android 框架和 HAL 之间通过 Binder 进程间通信 (IPC) 调用进行通信。后者为以 HIDL 封装的传统 HAL 或旧版 HAL,在Android 8.0后几乎没有机器搭载使用。

3.系统运行库层

这层同样分为两个大类。

  1. Native Libraries通过一些C/C++库位Android系统提供主要的特性支持,例如:

    • SQLite:数据库支持
    • OpenGL|ES:3D绘图的支持
    • WebKit:提供浏览器内核的支持
  2. Runtime: 对于运行 Android 5.0(API 级别
    21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。ART 编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android设计的字节码格式,经过优化,使用的内存很少。编译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其可在Android 平台上运行。

    ART 的部分主要功能包括:

    预先 (AOT) 和即时 (JIT) 编译 优化的垃圾回收 (GC) 在 Android 9(API 级别28)及更高版本的系统中,支持将应用软件包中的 Dalvik Executable 格式 (DEX) 文件转换为更紧凑的机器代码。

    更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置观察点以监控特定字段 在 Android 版本 5.0(API
    级别 21)之前,Dalvik 是 Android Runtime。如果您的应用在 ART 上运行效果很好,那么它应该也可在Dalvik 上运行,但反过来不一定。

4.FrameWork(应用框架层)

这一层主要提供了构建应用程序时可能用到的各种API,Android的一些核心应用就是使用这些API完成的,开发者可以使用这些API来构建自己的应用程序。

5.System Apps(应用层)

应用层就是作为用户接触手机直接接触的那层,所有安装在手机上的应用程序就是属于这一层,比如系统自带的联系人、短信等程序,或者你自己开发的程序。

总结

梳理了下Android的系统架构,发现自己对Android底层架构的认知仍旧有点欠缺,希望好好弥补,加油!
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值