完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
虽然第2章Android系统启动看得比较晕,但还是想把一些总结性的内容做个笔记,加深自己对Android系统启动的理解。
1. init进程启动过程:init进程启动做了很多的工作,总的来说主要做了以下三件事: a. 创建和挂载启动所需的文件目录。 b. 初始化和启动属性服务。 c. 解析init.rc配置文件并启动Zygote进程。 2. Zygote进程启动过程:DVM(Dalvik虚拟机)和ART、应用程序进程以及运行系统的关键服务的SystemServer进程都是由Zygote进程来创建的,也称为孵化器。Zygote进程共做了以下几件事: a. 创建AppRuntime并调用其start方法,启动Zygote进程。 b. 创建Java虚拟机并为Java虚拟机注册JNI方法。 c. 通过JNI调用ZygoteInit的main函数进入Zygote的Java框架层。 d. 通过ZygoteSocket方法创建服务器端的Socket,并通过runSelectLoop方法等待AMS的请求来创建新的应用程序进程。 e. 启动SystemServer进程。 3. SystemServer处理过程:SystemServer进程创建后,主要做了如下工作: a. 启动Binder线程池,这样就可以与其他进程进行通信。 b. 创建SystemServerManager,其用于对系统的服务进行创建、启动和生命周期管理。 c. 启动各种系统服务。 4. Launcher启动过程:系统启动的最后一步,是启动一个应用程序来显示系统中已经安装的应用程序,这个应用程序就叫做Launcher。通俗来讲Launcher就是Android系统的桌面,它的作用主要有以下两点: a. 作为Android系统的启动器,用于启动应用程序。 b. 作为Android系统的桌面,用于显示和管理应用程序的快捷图标或者其他桌面组件。 最后总结一下Android系统启动流程: 1. 启动电源以及系统启动 当电源按下时引导芯片代码从预定义的地方(固化在ROM)开始执行。加载引导程序BootLoader到RAM,然后执行。 2. 引导程序BootLoader 引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。 3. Linux内核启动 当内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置时,它首先在系统文件中寻找init.rc文件,并启动init进程。 4. init进程启动 初始化和启动属性服务,并且启动Zygote进程。 5. Zygote进程启动 创建Java虚拟机并为Java虚拟机注册JNI方法,创建服务器端Socket,启动SystemServer进程。 6. SystemServer进程启动 启动Binder线程池和SystemServerManager,并且启动各种系统服务。 7. Launcher启动 被SystemServer进程启动的AMS会启动Launcher,Launcher启动后会将已安装应用的快捷图标显示到界面上。 |
|
|
|
只有小组成员才能发言,加入小组>>
4521个成员聚集在这个小组
加入小组3338 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4267 浏览 1 评论
4292 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 22:24 , Processed in 0.568144 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号