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
相关文章:
Android系统中init进程、zygote进程和SystemServer进程简单学习总结
Android系统中,init、zygote和SystemServer进程是系统启动和运行的关键进程,它们之间有着密切的关系,本文针对这三个进程的学习做一个简单汇总,方便后续查询。 1、init进程 Android用户空间执行的第一个程序就是它,可…...
Flask 基于wsgi源码启动流程
1. 点击 __call__ 进入到源码 2. 找到 __call__ 方法 return 执行的是 wsgi方法 3. 点击 wsgi 方法 进到 wsgi return 执行的是 response 方法 4. 点击response 方法 进到 full_dispatch_request 5. full_dispatch_request 执行finalize_request 方法 6. finalize_request …...
leetcode代码 50道答案
简单难度:两数之和 def twoSum(nums, target): for i in range(len(nums)): for j in range(i 1, len(nums)): if nums[i] nums[j] target: return [i, j] return [] 简单难度:有效的括号 def isVa…...
Centos-stream 9,10 add repo
Centos-stream repo前言 Centos-stream 9,10更换在线阿里云创建一键更换repo 自动化脚本 华为centos-stream 源 , 阿里云centos-stream 源 华为epel 源 , 阿里云epel 源vim /centos9_10_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author: make.h...
【隐私计算大模型】联邦深度学习之拆分学习Split learning原理及安全风险、应对措施以及在大模型联合训练中的应用案例
Tips:在两方场景下,设计的安全算法,如果存在信息不对等性,那么信息获得更多的一方可以有概率对另一方实施安全性攻击。 1. 拆分学习原理 本文介绍了一种适用于隐私计算场景的深度学习实现方案——拆分学习,又称分割…...
DataWhale—PumpkinBook(TASK05决策树)
课程开源地址及相关视频链接:(当然这里也希望大家支持一下正版西瓜书和南瓜书图书,支持文睿、秦州等等致力于开源生态建设的大佬✿✿ヽ(▽)ノ✿) Datawhale-学用 AI,从此开始 【吃瓜教程】《机器学习公式详解》(南瓜…...
elasticsearch7.10.2集群部署带认证
安装elasticsearch rpm包安装 下载地址 https://mirrors.aliyun.com/elasticstack/7.x/yum/7.10.2/ 生成证书 #1.生成CA证书 # 生成CA证书,执行命令后,系统还会提示你输入密码,可以直接留空 cd /usr/share/elasticsearch/bin ./elasticsearch-certutil ca#会在/usr/share/el…...
Java基础-I/O流
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 字节流 定义 说明 InputStream与OutputStream示意图 说明 InputStream的常用方法 说明 OutputStrea…...
全面解析多种mfc140u.dll丢失的解决方法,五种方法详细解决
当你满心期待地打开某个常用软件,却突然弹出一个错误框,提示“mfc140u.dll丢失”,那一刻,你的好心情可能瞬间消失。这种情况在很多电脑用户的使用过程中都可能出现。无论是游戏玩家还是办公族,面对这个问题都可能不知所…...
详细探索xinput1_3.dll:功能、问题与xinput1_3.dll丢失的解决方案
本文旨在深入探讨xinput1_3.dll这一动态链接库文件。首先介绍其在计算机系统中的功能和作用,特别是在游戏和输入设备交互方面的重要性。然后分析在使用过程中可能出现的诸如文件丢失、版本不兼容等问题,并提出相应的解决方案,包括重新安装相关…...
InfluxDB时序数据库笔记(一)
InfluxDB笔记一汇总 1、时间序列数据库概述2、时间序列数据库特点3、时间序列数据库应用场景4、InfluxDB数据生命周期5、InfluxDB历史数据需要另外归档吗?6、InfluxDB历史数据如何归档?7、太麻烦了,允许的话选择设施完备的InfluxDB云产品吧8、…...
Spring Boot 3.x + OAuth 2.0:构建认证授权服务与资源服务器
Spring Boot 3.x OAuth 2.0:构建认证授权服务与资源服务器 前言 随着Spring Boot 3的发布,我们迎来了许多新特性和改进,其中包括对Spring Security和OAuth 2.0的更好支持。本文将详细介绍如何在Spring Boot 3.x版本中集成OAuth 2.0…...
2024年09月CCF-GESP编程能力等级认证Scratch图形化编程二级真题解析
本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共 10 题,每题 3 分,共 30 分) 第 1 题 据有关资料,山东大学于 1972 年研制成功 DJL-1 计算机,并于 1973 年投入运行,其综合性能居当时全国第…...
Linux 正则表达式(basic and extened)
正则表达式(Regular Expressions),整理自: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html gred sed 定义 Regular Expressions (REs) provide a mechanism to select specific strings from a set of character strings.…...
GB 35114-2017 学习笔记(规避版权阉割版)
GB 35114-2017 学习笔记(规避版权阉割版) openstd.samr.gov.cn 国家标准全文公开系统 这个政府网站提供GB 35114-2017标准的的预览和下载,有需要的自行下载 GB 35114-2017作为一个国家强制标准,在国家标准全文公开系统 自己做个…...
YOLO-FaceV2: A Scale and Occlusion Aware Face Detector
《YOLO-FaceV2:一种尺度与遮挡感知的人脸检测器》 1.引言2.相关工作3.YOLO-FaceV23.1网络结构3.2尺度感知RFE模型3.3遮挡感知排斥损失3.4遮挡感知注意力网络3.5样本加权函数3.6Anchor设计策略3.7 归一化高斯Wasserstein距离 4.实验4.1 数据集4.2 训练4.3 消融实验4.3.1 SEAM块4…...
进程间通信--详解
目录 前言一、进程间通信介绍1、进程间通信目的2、进程间通信发展3、进程间通信的分类4、进程间通信的必要性5、进程间通信的技术背景6、进程间通信的本质理解 二、管道1、什么是管道2、匿名管道pipe(1)匿名管道的原理(2)pipe函数…...
零基础上手WebGIS+智慧校园实例(1)【html by js】
请点个赞收藏关注支持一下博主喵!!! 等下再更新一下1. WebGIS矢量图形的绘制(超级详细!!),2. WebGIS计算距离, 以及智慧校园实例 with 3个例子!!…...
【Github】如何使用Git将本地项目上传到Github
【Github】如何使用Git将本地项目上传到Github 写在最前面1. 注册Github账号2. 安装Git工具配置用户名和邮箱仅为当前项目配置(可选) 3. 创建Github仓库4. 获取仓库地址5. 本地操作(1)进入项目文件夹(2)克隆…...
集合Queue、Deque、LinkedList、ArrayDeque、PriorityQueue详解
1、 Queue与Deque的区别 在研究java集合源码的时候,发现了一个很少用但是很有趣的点:Queue以及Deque; 平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用,但是一直都不知道Queue的作用,于是就直接官方…...
zh3100组合式选粉机的设计【说明书+27张CAD图纸】
zh3100组合式选粉机作为粉体分级领域的核心设备,其设计融合了流体力学、机械传动与颗粒分离理论,通过优化结构参数与气固两相流场分布,实现高精度、低能耗的粉体分级作业。该设备采用模块化组合设计理念,将选粉室、导流装置、分级…...
VIT模型IP核需要修改的地方
导入路径 "D:\VIT\HG-PIPE\instances\proj_ATTN0\work"选择“open project”整合多个 HLS IP 时 遇到“撞名”此时会报错:Top function not found: there is no function named top INFO: [HLS 200-1510] Running: set_directive_top -name top top...
AI内容创作自动化了99%,为什么每天还是要手动7-8小时?因为大多数人把“判断层”彻底想反了
你有没有这种感觉?刷到一条深度视频——量子力学、斯多葛、佛学、红楼梦、AI前沿全混在一起讲得头头是道,弹幕刷屏“这是AI写的吧?” 结果博主本人站出来说:我已经败给AI了,我服了。 粉丝以为这是全AI流水线࿰…...
打造高效离线文字识别系统:Umi-OCR插件深度应用指南
打造高效离线文字识别系统:Umi-OCR插件深度应用指南 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins 在数字化办公与信息处理领域,离线OCR技术正成为保护数据隐私与提升处理效率的…...
ESP8266轻量级按钮状态MQTT同步库
1. 项目概述BartOS-button-online是为 BartOS 物联网操作系统设计的轻量级按钮状态在线同步库,专用于资源受限的 ESP8266 平台(如 ESP-01、NodeMCU),并兼容 Arduino Core for ESP8266 开发环境。该库不提供独立的 UI 或 Web 服务&…...
告别手动配置:利用Ansible Playbook自动化部署华为GaussDB数据库集群
从零到集群:Ansible Playbook全自动部署华为GaussDB实战指南 在数据库运维领域,重复性手动部署堪称效率杀手。我曾亲眼见证某金融科技团队为部署测试环境GaussDB集群,三名资深DBA耗费整整两天时间——从系统调优、依赖安装到配置文件修改&…...
ESP32-S3的AI新玩法:除了语音唤醒,还能用TensorFlow Lite Micro做哪些酷事?(环境音识别/振动监测实战)
ESP32-S3边缘智能实战:从环境音识别到工业振动监测的AI新范式 当一颗售价不到5美元的芯片能够听懂玻璃破碎声、预测电机故障,甚至识别婴儿啼哭时,物联网设备的"感知能力"正在被重新定义。ESP32-S3搭配TensorFlow Lite Micro&#x…...
非原生微信小程序逆向:H5页面调试与授权劫持技巧
非原生微信小程序逆向工程实战:H5调试与授权机制深度解析 微信生态中存在着大量采用H5页面套壳实现的"伪原生"小程序,这类应用往往隐藏着更灵活的技术实现和潜在的安全风险。本文将深入探讨这类特殊小程序的逆向分析方法,从技术原理…...
零售行业自动化解决方案选型,核心看这几点:企业级智能体架构与落地实测分析
当前,零售行业正处于从“信息化”向“智能化”跨越的关键拐点。 面对全渠道运营的复杂性、劳动力成本的持续攀升以及消费者对交付时效的极致追求, 自动化解决方案已成为零售企业降本增效的核心战略工具。 然而,市场中各类技术路径分化严重&am…...
NitroShare高效使用指南:从安装到定制的全流程解析
NitroShare高效使用指南:从安装到定制的全流程解析 【免费下载链接】nitroshare-desktop Network file transfer application for Windows, OS X, & Linux 项目地址: https://gitcode.com/gh_mirrors/ni/nitroshare-desktop NitroShare是一款跨Windows、…...
