Android启动深度解析:从init到属性系统
需积分: 0 167 浏览量
更新于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启动过程涉及多个层次的初始化和管理,其中属性系统作为核心组件之一,确保了系统参数的有效管理和通信。通过深入理解这个过程,开发者可以更好地优化系统性能和调试问题。
2011-12-06 上传
2010-03-30 上传
2011-11-04 上传
2010-03-21 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
条之
- 粉丝: 27
- 资源: 2万+
最新资源
- 毕业设计&课设-仿真工具箱(MATLAB).zip
- flutter.widgets
- Greentask-crx插件
- Wrappit:用于在PacketWrapper中生成数据包类的程序
- matlab求导代码-rsHRF:从BOLD-fMRI信号估计静止状态HRF
- FakeSunCompany-Website
- 基于halcon的旋转中心仿真测试.rar
- NeoClient:Neo4j的轻量级OGM,支持事务和BOLT协议
- 毕业设计&课设-根据系统要求配置FMCW波形。然后定义目标的范围和速度,并模拟其位移….zip
- PythonKit:与 Python 交互的 Swift 框架
- react-weather-app:SheCodes React最终项目
- Divi Builder guide-crx插件
- 小游戏-天天消消乐(附带源码)
- junior-programming:我的初中生及其项目的资料库
- gateway-nacos-sleuth.7z
- design-pattern:Java设计模式,和简书的https