工作生活

【转】Android启动过程

2019-06-29  本文已影响0人  RonZheng2010

1. ROM 阶段

Android设备上电后,首先从处理器片上ROM的启动引导代码开始执行。ROM寻找Bootloader代码,并加载到内存。

2. Bootloader 阶段

Bootloader完成硬件初始化,然后找到Linux内核代码,并加载到内存。

3. Linux Kernel 阶段

Linux内核初始化各种软硬件环境,加载驱动程序,挂载根文件系统,并执行init程序。Android世界由此开启。

4. Android Init 阶段

init 程序是Android启动过程中最核心的程序。init 工作包括:

Android启动过程中,最重要的是启动各个系统服务。系统所有的功能都依赖这些服务来完成。比如启动应用程序,拨打电话,使用WIFI或者蓝牙,播放音视频等。只要这些服务能正常地启动并正常工作,整个Android系统的启动也就完成了。

4.1 本地服务

本地服务是指运行在C++层的系统守护进程。

4.2 Android服务

Android服务是指运行在Dalvik虚拟机进程中的服务。

init执行app_process程序,创建Zygote进程。Zygote是Android系统最重要的进程,所有后续的Android应用程序都由它fork出来。

Zygote首先fork出SystemServer,后者启动所有的Android核心服务,包括ActivityManager,WindowManager,PowerManager等。这些Android服务并不是运行在独立的进程中,而是运行在SystemServer进程中,以线程的方式存在。

android_boot.jpg

参考资料

Android内核开发:图解Android系统的启动过程
https://blog.51cto.com/ticktick/1659473

Zygote
https://blog.csdn.net/tfygg/article/details/52086621

Android 系统开机日志
https://blog.csdn.net/zhangbijun1230/article/details/79776711

上一篇下一篇

猜你喜欢

热点阅读