“当按下手机开机键的时候,究竟发生了什么”
总览
Android的启动流程是一个非常复杂的流程,如果有什么遗漏,还望多多指教。这里简单说下基本的流程:
(1)当按下手机的开机键的时候,引导芯片代码从与预定以(固化在ROM)的地方开始执行。加载Bootloader到RAM中执行。
(2)BootLoader主要用来拉起操作系统OS。
(2)Linux内核启动,寻找init.rc文件。
(3)启动init进程,开启属性服务,通过init进程启动Zygote进程。
(4)通过Zygote进程启动SystemServer进程,从而开启了Android世界的大门。
有这么一个比较形象的比喻:盘古(Linux内核)开天辟地之后,世界上诞生了女娲(init进程),女娲觉得自己很孤独,想着弄个人出来陪伴自己,于是捏了个人,亚当就这样诞生了(Zygote进程),时间长了,亚当觉得和妈妈在一起有些无聊了,就用自己的肋骨创建出了夏娃(SystemServer),于是新世界诞生了。
init进程
先从init进程说起,也就是上图中的进程号为1的进程。作为第一个进程,它被赋予及其重要的职责。启动属性、创建Zygote进程、挂载文件系统等等。
下图中描绘了init的启动流程以及如何启动Zygote进程(参考Android8.0)。未完待续。