当前位置: 首页 > news >正文

Android系统中init进程、zygote进程和SystemServer进程简单学习总结

Android系统中,init、zygote和SystemServer进程是系统启动和运行的关键进程,它们之间有着密切的关系,本文针对这三个进程的学习做一个简单汇总,方便后续查询。

1、init进程

Android用户空间执行的第一个程序就是它,可见它的地位是多么重要,因为是用户空间执行的第一个进程,因此进程ID为1。

该进程主要负责系统初始化相关工作,包括挂载文件系统、启动其他进程(如zygote和SystemSever);提到init进程,就不得不提到init.rc文件,该文件并不是一个可执行程序,而是一个启动脚本,用于在系统初始化过程中执行各种操作,init.rc安装到目标系统文件的根文件目录下,由init程序进行解析和执行。

1.1、init进程关键点说明

(1)init进程负责启动和管理其他用户空间的进程,是所有用户空间进程的祖先;

(2)init进程会读取init.rc文件中的指令,进行相关命令和服务执行和处理;

(3)init进程可以设置和读取系统属性,这些属性用于配置系统的行为和状态;

(4)init进程负责监控和管理其他进程的生命周期,确保系统的稳定性和可靠性;

1.2、init.rc

(1)功能:该文件定义了系统启动过程中的各种操作,包括启动服务、设置属性等;

(2)语法:该文件基于Android初始化语言编写,主要包括四种类型声明:Actions(行为)、Command(命令)、Services(服务)、Options(选项);其中Actions和Seveices命名具有唯一性;

(3)扩展性:除了init.rc,系统还可以使用其他rc文件,来定义特定的初始化过程,例如init.usb.rc等;

1.3、关系

init进程负责启动zygote进程,并在启动过程中管理其他服务。

1.4、学习参考

https://blog.csdn.net/zhonglunshun/article/details/78615980

2、zygote进程

zygote 进程是 Android 系统中的一个关键组件,主要负责应用程序的启动和管理。

2.1、zygote 进程的主要功能

(1)预加载类和资源:
在启动时,zygote 会预加载一些常用的类和资源,以提高后续应用程序的启动速度。这种预加载机制可以减少内存使用和启动时间。

(2)创建应用进程:
zygote 使用 fork 机制来创建新的应用程序进程。当应用程序需要启动时,zygote 会复制自身的内存空间,从而快速生成新的进程。这种方式比传统的进程创建方式更高效。

(3)管理应用程序的生命周期:
zygote 进程负责管理应用程序的生命周期,包括启动、停止和销毁应用程序进程。

(4)提供系统服务:
zygote 进程与 SystemServer 进程进行交互,提供必要的系统服务接口,确保应用程序能够访问系统资源和服务。

(5)处理应用程序的请求:
zygote 进程能够接收来自应用程序的请求,并根据需要启动相应的服务或进程。

2.2、关系

zygote 进程在启动时会创建 SystemServer 进程,SystemServer 进程则依赖于 zygote 提供的功能来管理和启动其他服务。

2.3、学习参考

https://blog.csdn.net/lijie2664989/article/details/109689067

3、SystemServer进程

SystemServer 进程是 Android 系统中的一个核心组件,负责管理和提供系统服务。

3.1、SystemServer 进程的主要功能

(1)启动系统服务
SystemServer 进程负责启动和管理各种系统服务,如 ActivityManager、WindowManager、PackageManager、PowerManager 等。这些服务是 Android 系统正常运行所必需的。

ActivityManager:管理应用程序的生命周期和任务。
WindowManager:  管理窗口的显示和布局。
PackageManager: 管理应用程序的安装、卸载和更新。
PowerManager:   管理设备的电源状态和节能策略。

(2)提供服务接口
SystemServer 为应用程序和其他进程提供访问系统服务的接口。应用程序可以通过 Binder IPC(进程间通信)机制与 SystemServer 进行交互,调用所需的服务。

(3)管理应用程序的生命周期
SystemServer 负责管理应用程序的生命周期,包括启动、停止和重启应用程序。它监控应用程序的状态,并根据需要进行资源分配和回收。

(4)处理系统事件
SystemServer 进程监听和处理系统事件,如屏幕状态变化、网络连接状态变化等,并根据这些事件调整系统服务的行为。

(5)协调系统资源
SystemServer 负责协调和管理系统资源的使用,确保各个服务和应用程序能够高效地共享资源。

(6)安全管理
SystemServer 还负责处理与安全相关的任务,如权限管理和应用程序的安全性检查,确保系统的安全性和稳定性。

3.2、学习参考

https://www.jianshu.com/p/84f6b9e0867f

http://www.lryc.cn/news/491157.html

相关文章:

  • Flask 基于wsgi源码启动流程
  • leetcode代码 50道答案
  • Centos-stream 9,10 add repo
  • 【隐私计算大模型】联邦深度学习之拆分学习Split learning原理及安全风险、应对措施以及在大模型联合训练中的应用案例
  • DataWhale—PumpkinBook(TASK05决策树)
  • elasticsearch7.10.2集群部署带认证
  • Java基础-I/O流
  • 全面解析多种mfc140u.dll丢失的解决方法,五种方法详细解决
  • 详细探索xinput1_3.dll:功能、问题与xinput1_3.dll丢失的解决方案
  • InfluxDB时序数据库笔记(一)
  • Spring Boot 3.x + OAuth 2.0:构建认证授权服务与资源服务器
  • 2024年09月CCF-GESP编程能力等级认证Scratch图形化编程二级真题解析
  • Linux 正则表达式(basic and extened)
  • GB 35114-2017 学习笔记(规避版权阉割版)
  • YOLO-FaceV2: A Scale and Occlusion Aware Face Detector
  • 进程间通信--详解
  • 零基础上手WebGIS+智慧校园实例(1)【html by js】
  • 【Github】如何使用Git将本地项目上传到Github
  • 集合Queue、Deque、LinkedList、ArrayDeque、PriorityQueue详解
  • 谈一下开源生态对 AI人工智能大模型的促进作用
  • 基于python的机器学习(四)—— 聚类(一)
  • 实时数据开发 | 怎么通俗理解Flink容错机制,提到的checkpoint、barrier、Savepoint、sink都是什么
  • C++设计模式-策略模式-StrategyMethod
  • 小程序免备案:快速部署与优化的全攻略
  • Jmeter中的定时器
  • C++自动化测试:GTest 与 GitLab CI/CD 的完美融合
  • vscode连接远程开发机报错
  • 神经网络12-Time-Series Transformer (TST)模型
  • IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题 四)
  • Fakelocation Server服务器/专业版 Centos7