Android面试必备基础知识系列:System、App、Activity启动过程

本文详细介绍了Android系统的启动过程,从加载内核到启动Init进程,再到Zygote进程、Runtime进程、本地服务的启动,以及Home Launcher的启动流程。接着,文章讨论了Android应用的安装方式和路径,以及App启动过程,特别是通过AMS如何启动Activity。最后,对Android架构学习的重要性进行了总结,强调了不断学习和提升技术的必要性。
摘要由CSDN通过智能技术生成

二、加载系统内核


Linux 内核映像通常包括两部分代码,分别为实模式代码和保护模式代码。当 BootLoader 装载内核映像到代码段内存时,分别放置实模式代码和保护模式代码到不同的位置,然后进入实模式代码执行,实模式代码执行完成后转入保护模式代码。

实模式和保护模式的概念再次不做过多解释,读者可以自行查阅资料。

三、启动Init进程


当系统内核加载完成之后,会首先启动 Init 守护进程,它是内核启动的第一个用户级进程,它的进程号总是 1。Init 进程启动完成之后,还负责启动其他的一些重要守护进程,包括:

Usbd 进程(USB Daemon):USB 连接后台进程,负责管理 USB 连接。

adbd 进程(Android Debug Bridge Daemon):ADB 连接后台进程,负责管理 ADB 连接。

debuggerd 进程(Debugger Daemon) :调试器后台进程,负责管理调试请求及调试过程。

rild 进程 (Radio Interface Layer Daemon):无线接口层后台进程,负责管理无线通信服务。

四、启动Zygote进程


Init 进程和一些重要的守护进程启动完成之后,系统启动 Zygote 进程。Zygote 进程启动后,首先初始化一个 Dalvik VM实例,然后为它加载资源与系统共享库,并开启 Socket 监听服务,当收到创建Dalvik VM 实例请求时,会通过COW(copy on write)技术最大程度地复用自己,生成一个新的Dalvik VM 实例。Dalvik VM 实例的创建方法基于 linux 系统的 fork 原理。

其实,我个人理解,Zygote 进程就相当于Linux系统中的 fork 进程。由它可以在系统运行期间,接收到创建虚拟机请求时,孵化 Dalvik VM实例。Zygote 进程孵化 Dalvik VM 实例流程如下图所示:

图1 Zygote进程孵化Dalvik VM实例流程

<

  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值