安卓架构

news/2024/11/17 5:23:21/文章来源:https://www.cnblogs.com/Joooook/p/18415182

安卓架构

目录

  • 1 Linux 内核层
  • 2 硬件抽象层 HAL
  • 3 Native C/C++ 库 && Android Runtime
  • 4 Java Framework 层
  • 5 System Apps 层

1 Linux 内核层

Android 平台的基础是 Linux 内核。例如,ART 依靠 Linux 内核来执行底层功能。Linux 内核的安全机制为 Android 提供了相应的保障,也允许设备制造商为内核开发硬件驱动程序。

2 硬件抽象层 HAL

硬件抽象层提供标准界面,向更高级别的 Java Framework 层显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机和蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

3 Native C/C++ 库 && Android Runtime

每个应用都在其自己的进程中运行,都有自己的虚拟机实例。ART 通过执行 DEX 文件可在设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用内存很少。ART 主要功能包括:AOT 和 JIT 编译,优化的 GC,以及调试相关的支持。

Native C/C++ 库主要包括 init 孵化来的用户空间的守护进程、HAL 层以及开机动画等。启动 init 进程,是 Linux 系统的用户进程,init 进程是所有用户进程的父进程。

4 Java Framework 层

Zygote 进程:

是由 init 进程通过解析 init.rc 文件后 fork 生成的,Zygote 进程主要包括:

  • 加载 ZygoteInit 类,注册 Zygote Socket 服务端套接字
  • 加载虚拟机
  • 提前加载类 preloadClasses
  • 提前加载资源 preloadResources

System Server 进程:

是由 Zygote 进程 fork 而来,System Server 是 Zygote 孵化的第一个进程,System Server 负责启动和管理整个 Java Framework,包括 ActivityManager、WindowManager、PackageManager、PowerManager 等服务。

Media Server 进程:

是由 init 进程 fork 而来,负责启动和管理整个 C++ Framework,包括 AudioFlinger、Camera Service 等服务。

5 System Apps 层

Zygote 进程孵化出第一个 App 进程是 Launcher,这是用户看到的桌面 App;

Zygote 进程还会创建 Browser、Phone、Email 等 App 进程,每个 App 至少运行在一个进程上。

所有的 App 进程都是由 Zygote 进程 fork 生成的。

系统内置的应用程序以及非系统级的应用程序都属于应用层,负责与用户进行直接交互。

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

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

相关文章

陈柯烽的第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc这个作业的目标 建立一个属于自己的博客,介绍自己以及表达对课程的期望姓名-学号 陈柯烽-2022329301006软件技术基础第一次作业 一、自我介绍 1、基本信息我叫陈柯烽,来自浙江宁波,是自动化22级一班的学生,我…

chm 文件打开只显示目录,不显示内容

chm 文件打开只显示目录,不显示内容解决方法:解除锁定OK 了

【好用安全保密】不用插件,压缩js、html、css、code【一眼就会系列】【亲测有效】

​ 仅用离线版Notepad搞定。不用插件及辅助工具,有效保证了文件信息安全。 (一般发布版本都是无注释的-压缩文件和已编译文件。为了信息安全性,所有都是离线-区域网研发。) ​ 总结: 先把文本中注释去掉。 notepad++ 【编辑】-【空白字符操作】-【移除行首和行尾空格】 …

《密码系统设计》第二周

第二周预习报告 学习内容Head First C 嗨翻 C 语言 第8章 《Windows C/C++加密解密实战》第3,5章 第三章重点 3.4,3.5, 特别3.4.4 第五章重点 5.3.7 课程 mindmapAI 对学习内容的总结(1分) 要求让AI阅读学习内容并进行总结总结 1. Head First C 嗨翻 C 语言 第8章函数指针:…

活动召集丨实时多模态 AI Builder 团聚!RTE Open Day@S创上海,9.20/21

9 月 20~21 日,上海, S创上海 2024,看见不一样的创新和技术。这场年轻、多元、活力十足的科技盛会,将汇聚创业者、开发者、艺术家和众多无法定义边界的跨界者。RTE 开发者社区的 Builders 和 RTE Open Day 也将玩乐其中!「有一群人在一起,就很好」。 来到第四期的 RTE O…

问题1:pytorch版本不同,文件运行速度不同

好像新版本更快一点哦,为什么呢? 版本1: PyTorch version: 1.12.1Is CUDA available? TrueCUDA version: 11.3cuDNN version: 8302版本2: PyTorch version: 2.3.1+cu121Is CUDA available? TrueCUDA version: 12.1cuDNN version: 8907

踩坑日志2:dataloader的num_workers问题

当我想用dataloader多开子进程加快图片加载速度时,发现报有关进程的错误:RuntimeError: An attempt has been made to start a new process before thecurrent process has finished its bootstrapping phase.This probably means that you are not using fork to start your…

深度!程序员生涯的垃圾时间(上)

深度好文!程序员的垃圾时间! 垃圾时间(Garbage time)是体育赛事中的术语,指一场比赛中双方分差过大,胜负已定。此时,比赛剩余的时间不再对最终结果产生决定性影响,剩下的时间就被称为垃圾时间。将这个词用在浩浩荡荡的技术革命、汹涌向前的历史车轮上,再合适不过。时代…

基于Java+Springboot+Vue开发的民宿预订管理系统

项目简介该项目是基于Java+Springboot+Vue开发的民宿预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的民宿预订管理系统项目,大学生可以在实践中学…

基于Java+Springboot+Vue开发的电影订票管理系统

项目简介该项目是基于Java+Springboot+Vue开发的电影订票管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的电影订票管理系统项目,大学生可以在实践中学…

解决c盘无故被大量占用问题

解决c盘无故被大量占用问题 问题引出 在用win10、win11的时候经常遇到c盘莫名其妙的就被占用完了,即便清理后也还是没将内存释放出来,这可能是因为虚拟内存过大导致的。 虚拟内存是什么 1.Windows虚拟内存机制 Windows虚拟内存是一种内存管理技术,它允许计算机在物理内存不足…

xyctf2024 pwn

hello world checksec大多保护都开启了 main函数 int __fastcall main(int argc, const char **argv, const char **envp) {char buf[20]; // [rsp+0h] [rbp-20h] BYREFinit();printf("%s", "please input your name: ");read(0, buf, 0x48uLL);printf(&qu…