android启动过程详解.docxVIP

  • 6
  • 0
  • 约3.07千字
  • 约 5页
  • 2021-01-08 发布于天津
  • 举报
An droid启动过程详解 An droid从Lin ux系统启动有 4个步骤; (1) init进程启动 ⑵Native服务启动 ⑶ System Server, An droid 服务启动 (4) Home 启动 总体启动框架图如: Heme ”??? 加真削gg 丸疋皿裁打呦珈內加〕 Dalvi k VM Aeti^-ity Manager Package Manas er Handle Window Manager Zygote Fork Sendee ril-dacmon media bootsound bQtanim Property Service init Zyjrote 第一步:initial 进程(system\core\init) init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开 始运行,并已初始化所有的设备驱动程序和数据结构等) 之后,就通过启动一个用户级程序 init的方式,完成引导进程。in it始终是第一个进程. In it.rc In it.marvell.rc In it进程一起来就根据ini t.rc和ini t.xxx.rc脚本文件建立了几个基本的服务: servicema namger zygote 最后Init并不退出,而是担当起 property service的功能。 1.1脚本文件 in it@System/Core/l nit Init.c : parse_config_file(lnit.rc) @parse_c on fig_file(l nit.marvel.rc) 解析脚本文件:Init.rc和Init.xxxx.rc(硬件平台相关) In it.rc 是 An droid 自己规定的初始化脚本 (An droid In it Lan guage, System/Core/I nit/readme.txt) 该脚本包含四个类型的声明: Actio ns Comma nds Services Opti ons. 1.2服务启动机制 我们来看看In it是这样解析.rc文件开启服务的。 打开.rc 文件,解析文件内容 @ system\core\init\init.c 将 service 信息放置至U service_list 中。@ system\core\init parser.c restart_service()@ system\core\init\init.c service_start execve(…).建立 service 进程。 第二步 Zygote Servicema nager和zygote进程就奠定了 An droid的基础。Zygote这个进程起来才会建立起真 正的An droid运行空间,初始化建立的 Service都是Navtive service.在.rc脚本文件中zygote 的描述: service zygote /system/b in/app_process -Xzygote /system/b in --zygote --start-system-server 所以 Zygote 从 main(…)@frameworks\base\cmds\app_main.cpp 开始。 (1) mai n(…)@frameworks\base\cmds\app_mai n.cpp 建立 Java Run time run time.start(com.a ndroid.i nternal.os.Zygotel nit, startSystemServer); (2) run time.start@A ndroidR un time.cpp 建立虚拟机 运行: ernal.os.Zygotelnit : main 函数。 main()@ernal.os.Zygotelnit〃 正真的 Zygote。 registerZygoteSocket();〃 登记 Listen 端口 startSystemServer(); 进入Zygote服务框架。 经过这几个步骤,Zygote就建立好了,利用 Socket通讯,接收 ActivityManangerService 的 请求,Fork应用程序。 第三步 System Server startSystemServer@ernal.os.ZygoteInit 在 Zygote 上 fork 了一 个进程: com.a ndroid.server.SystemServer.于是 SystemServer@(SystemServer.java)就建立了。 An droid 的所有服务循环框架都是建立 SystemServer@(SystemServer.java)上。在 Syst

文档评论(0)

1亿VIP精品文档

相关文档