Android启动深度解析:从init到属性系统
需积分: 0 37 浏览量
更新于2024-07-10
收藏 464KB PPT 举报
"属性系统宏观图-Android启动过程分析"
Android系统的启动是一个复杂的过程,它始于Linux内核的加载,随后由init进程接手,进行一系列关键进程的创建和初始化。在这一过程中,属性系统扮演了重要的角色,它类似于Windows中的注册表,用于存储和管理系统的关键参数。
首先,Android系统启动时,Linux内核被加载,紧接着引导加载器会启动init进程。init进程是用户空间的第一个进程,其进程号为1,可以通过`ps`命令查看。这个进程的主要任务包括创建系统关键进程,如Zygote进程,以及初始化和管理属性系统。
init进程的入口点位于`system\core\init\init.c`文件的`main`函数中。它的工作流程主要分为四个步骤:
1. 解析配置文件:init进程会解析`init.rc`和设备特定的配置文件(如`init.sp6820a.rc`),这些文件定义了启动时需要执行的各个服务和动作。
2. 执行动作:根据配置文件的内容,init进程会执行预定义的阶段,包括启动Zygote进程。
3. 初始化属性系统:调用`property_init()`函数初始化属性资源,接着通过`property_start_service()`启动属性服务。
4. 监听事件:init进程进入一个无限循环,监听来自socket或属性服务器的事件。
Zygote进程是由init进程通过解析`init.rc`文件内容启动的,使用`service_start`函数并通过`fork`和`execv`创建。Zygote是所有Android应用进程的父进程,它预先加载并缓存系统库,以提高启动新应用的效率。
属性服务(propertyservice)是Android系统中用来管理属性的组件。它提供了一种键值对的存储方式,类似Windows的注册表。开发者可以通过`adb shell getprop`获取属性值,用`adb shell setprop`设置属性值。在源码中,`property_init()`和`start_property_service()`是与属性服务启动相关的函数。
属性系统的工作原理是这样的:属性读取进程(propertyconsumer)将共享内存映射到自己的进程空间,直接读取属性值;而属性设置进程(propertysetter)虽然也能加载共享内存,但不能直接修改。当需要设置或更改属性时,它通过Unix Socket发送属性请求给PropertyService,PropertyService则负责将变更写入共享内存和属性文件。
Android启动过程涉及多个层次的初始化和管理,其中属性系统作为核心组件之一,确保了系统参数的有效管理和通信。通过深入理解这个过程,开发者可以更好地优化系统性能和调试问题。
2023-03-09 上传
2023-06-09 上传
2023-09-21 上传
2023-07-25 上传
2023-04-06 上传
2023-09-22 上传
2023-08-06 上传
条之
- 粉丝: 23
- 资源: 2万+
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析