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

Android 系统框架

启动流程

init 进程启动过程

Android系统启动流程

Zygote启动流程及源码分析

APP启动流程

init进程是Android用户空间第一个进程,主要做以下3件事情:

  • 创建和挂载启动所需的文件目录。
  • 初始化和启动关键服务,守护关键服务。
  • 解析init.rc配置文件,并启动Zygote进程。
  1. 简述Android系统启动流程?
  • 按电源键开机,从ROM加载预制程序启动BootLoader。
  • Bootloader启动Linux内存Kernel,并启动第一个用户空间进程init。
  • init进程创建挂载文件目录,加载属性服务,解析init.rc文件启动Zygote进程。
  • Zygote进程,启动虚拟机,注册JNI服务,预加载系统资源(系统类,字体、资源文件、SO库、Chromium动态库)。创建Socket服务,fork出system_server进程,
  • system_server进程启动AMS、WMS、PMS等系统服务。
  • Zygote进入轮询监听AMS启动应用请求。
  • AMS启动Launcher。
  1. system_server 为什么要在 Zygote 中启动,而不是由 init 直接启动呢?
  • Zygote 作为孵化器,可以提前加载一些资源,当fork出子进程,子进程就会拥有这些进程。
  • system_server进程需要JNI函数、共享库、常用类、以及主题资源资源,在init进程中是没有的。
  1. 为什么要专门使用 Zygote 进程去孵化应用进程,而不是让 system_server 去孵化呢?
  • system_server进程包含AMS、WMS等系统服务,在应用进程中是不需要的。
  • fork操作仅会把调用线程拷贝到子进程,可能会导致死锁。
  1. 描述下是怎么导致死锁的?
  • fork操作复制整个用户空间(copy-on-write策略)以及所有系统对象,然后只复制当前线程到子线程,其他线程蒸发掉了。
  • 当某个线程获取了某个锁,锁会被复制进子进程,在子进程看,锁没有所有者没法解锁,程序发生死锁。
  1. Zygote 为什么不采用 Binder 机制进行 IPC 通信?
  • 先后时序问题,binder需要注册到ServiceManager,Zygote使用binder不能保证创建binder时ServiceManager初始化完成。
  • binder支持多线程操作,可能出现死锁。
  • binder拷贝问题,binder是成对存在的,分为Client端和服务端,fork出应用进程,不能释放无用binder对象,占用内存。
  • LocalSocket效率也很高,而且有权限验证能保证进程通信安全。
  • Socket fork后,应用进程可以关闭。

Android AMS(ATMS)

Android 的AMS是什么
Android AMS源码解析

Android WMS

Activity创建到View的显示过程

Android PMS

PMS(PackageManagerService) 原理

PMS处理APK的复制

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

相关文章:

  • 【Hystrix技术指南】(3)超时机制的原理和实现
  • MySQL: Failed to Connect to MySQL at XXXX:3306 with user root
  • 《大型网站技术架构设计》第二篇 架构-性能
  • 谷歌推出AI模型机器人RT2 将文本和图像输出为机器人动作
  • 常见的服务器安全管理漏洞
  • JavaScript高级:探索作用域链的神秘面纱
  • mysql数据库如何转移到oracle
  • nnU-Net 终极指南
  • ubuntu 安装 python
  • 【腾讯云 Cloud studio 实战训练营】云端 IDE 构建移动端H5
  • Kubernetes 之 Kubeadm 搭建
  • Qt应用开发(基础篇)——堆栈窗口 QStackedWidget
  • 浅谈测试开发岗位
  • 典型移动APP安全风险提醒
  • 多平台发布文章-项目总结
  • 什么是IoC?什么是Spring IoC?什么是DI?
  • 分布式任务调度平台XXL-JOB学习笔记-helloworld运行
  • 维护工程师提升设备管理水平的5个技巧
  • 解码大众全新数字高尔夫8汽车CAN FD行驶功能电气架构
  • 什么是DDL、MDL?
  • 【sonar】安装sonarQube免费社区版9.9【Linux】【docker】
  • MySQL基本语法总结
  • 锐捷VSU技术理论与实验
  • 深入探索Linux文件链接技术:ln命令的妙用
  • electron项目开发环境搭建
  • Spring 知识点
  • 目标跟踪与检测后进行 OpenCV 人脸识别 ,马赛克
  • 持有PMP证书,可申请CSPM证书!
  • linux自定义网络访问规则
  • 247 个经典实用有趣的 Python 实例附源码