0
点赞
收藏
分享

微信扫一扫

Android 进阶解密 - 系统启动,android开发基础在线学习网站

GG_lyf 2022-03-19 阅读 37
  1. 初始化和启动属性服务。

  2. 解析 init.rc 配置文件并启动 Zygote 进程。

[]( )二、Zygote 进程启动过程

在 Android 系统中,DVMDalvik 虚拟机)和 ART、应用程序进程以及运行系统的关键服务的 SystemServer 进程都是由 Zygote 进程来创建的,我们也将它称为孵化器。 它通过 fock(复制进程)的形式来创建应用程序进程和 SystemServer 进程,由于 Zygote 进程在启动时会创建 DVM 或者 ART,因此通过 fock 而创建的 应用程序进程和 SystemServer 进程可以在内部获取一个 DVM 或者 ART 的实例副本。

我们已经知道 Zygote 进程是在 init 进程启动时创建的,起初 Zygote 进程的名称并不是叫 “Zygote”,而是叫 “app_process”,这个名称在 Android.mk 中定义的,Zygote 进程启动后,Linux 系统下的 pctrl 系统会调用 app_process, 将其名称换成了 “Zygote”

[]( )Zygote 进程启动总结

  1. 创建 AppRuntime 并调用其 start 方法,启动 Zygote 进程。

  2. 创建 Java 虚拟机并为 Java 虚拟机注册 JNI 方法。

  3. 通过 JNI 调用 ZygoteInitmain 函数进入 Zygote 的 Java 框架层。

  4. 通过 registerZygoteSocket 方法创建服务器端 Socket,并通过 runSelectLoop 方法等待 AMS 的请求来创建新的应用程序进程。

  5. 启动 SystemServer 进程。

[]( )三、SystemServer 处理过程

SystemServer 进程主要用于创建系统服务,我们熟知的 AMS、WMS 和 PMS 都是由它来创建的,因此掌握 SystemServer 进程是如何启动的,它在启动时做了哪些工作是十分必要的。

[]( )SystemServer 进程启动总结

SystemServer 进程被创建后,主要做了如下工作:

  1. 启动 Binder 线程池,这样就可以与其他进程进行通信。

  2. 创建 SystemServerManager,其用于对系统的服务进行创建、启动和

Android 进阶解密 - 系统启动,android开发基础在线学习网站

生命周期管理。

  1. 启动各种系统服务。(引导服务、核心服务和其他服务)

引导服务:AMS、PMS等等

[]( )四、Android 系统启动流程总结

[]( )1、SystemServer 进程启动总结

当电源键按下时引导芯片代码从预定义的地方(固化在 ROM)开始执行。加载引导程序 BootLoader 到 RAM,然后执行。

[]( )2、引导程序 BootLoader

引导程序 BootLoader 是在 Android 操作系统开始运行前的一个小程序, 它的主要作用是把系统 OS 拉起来并运行。

[]( )3、Linux 内核启动

总结

可以看出,笔者的工作学习模式便是由以下?「六个要点」?组成:

? 多层次的工作/学习计划 + 番茄工作法 + 定额工作法 + 批处理 + 多任务并行 + 图层工作法?

希望大家能将这些要点融入自己的工作学习当中,我相信一定会工作与学习地更富有成效。

下面是我学习用到的一些书籍学习导图,以及系统的学习资料。每一个知识点,都有对应的导图,学习的资料,视频,面试题目。

如:我需要学习?Flutter的知识。(大家可以参考我的学习方法)

  • Flutter 的思维导图(无论学习什么,有学习路线都会事半功倍)

Android 进阶解密 - 系统启动,android开发基础在线学习网站

  • Flutter进阶学习全套手册

Android 进阶解密 - 系统启动,android开发基础在线学习网站

  • Flutter进阶学习全套视频

Android 进阶解密 - 系统启动,android开发基础在线学习网站

大概就上面这几个步骤,这样学习不仅高效,而且能系统的学习新的知识。

举报

相关推荐

0 条评论