完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
详情地址:https://fengke.club/GeekMart/views/offline/android
购买链接:https://fengke.club/GeekMart/su_fHnaDyD1o.jsp Linux引导过程Linux内核与Android系统linux内核有什么区别? 什么是引导装载程序? 什么是Zygote? 什么是init.rc? 什么是系统服务? 第一节Android启动步骤 第二节引导程序 — Boot Loader 源代码目录:$(dir)rk3128-sourceu-boot 第三节内核 — Kernel Android内核就是Linux。内核启动时,设置硬件,挂载文件系统,执行第一个应用程序 init。 第四节Init进程 init是第一个进程,可以说它是root进程或者所有进程的父进程。init进程有两个责任,一是挂载目录,比如/sys、/dev、/proc,二是运行init.rc脚本。对于init.rc文件,Android中有特定的格式以及规则。在Android中,我们叫做Android初始化语言。 init.rc位于目录$(dir)rk3128-sourcedevicerockchiprksdk Android初始化语言由四大类型的声明组成,即Actions(动作)、Commands(命令)、Services(服务)、以及Options(选项)。 Action(动作):动作是以命令流程命名的,有一个触发器决定动作是否发生。 语法: on Service是init加载的和是退出重启的(可选)程序。Service具有如下格式: service [ ]* ... Options(选项) 选项是对服务的描述,它们影响init进程如何以及何时启动服务。 来看看默认的init.rc文件。这里只列出了主要的事件以及服务。 Table ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201124143035722.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlbmdrZXN6,size_16,color_FFFFFF,t_70#pic_center)在这个阶段你可以在设备的屏幕上看到“android”logo了。 第五节Zygote 在Java中,不同的虚拟机实例会为不同的应用分配不同的内存。但如果Android系统为每一个应用启动不同的Dalvik虚拟机实例,就会消耗大量的内存以及时间。因此,为了克服这个问题,Android系统创造了”Zygote”,Zygote让Dalvik虚拟机共享代码、低内存占用以及最小的启动时间成为可能。 第六节系统服务或服务 完成了上面几步之后,运行环境请求Zygote运行系统服务。系统服务同时使用native以及java编写,系统服务可以认为是一个进程,系统服务包含了所有的System Services。 Zygote创建新的进程去启动系统服务,可以在ZygoteInit类的”startSystemServer”方法中找到源代码。 第七节引导完成 一旦系统服务在内存中跑起来了,Android就完成了引导过程。在这个时候“ACTION_BOOT_COMPLETED”开机启动广播就会发出去。 第八节实验 init.rc中增加一条启动参数setprop fengke.test 100 第九节实验现象 系统启动后用getprop fengke.test来看是否这个值已经写入
|
|
相关推荐
|
|
1004 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3272 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1443 浏览 0 评论
2102 浏览 0 评论
1614 浏览 0 评论
75293 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 04:20 , Processed in 0.561614 second(s), Total 66, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号