再次将Android系统的启动过程复习了一下
linux启动后,会启动第一个用户级进程init(代码位置: system/core/init/init.c),init做的事情有很多,其中就包括了解析运行init.rc脚本。
脚本中会启动一个叫做Zygote的进程(代码位置:frameworks/base/cmds/app_process/app_main.cpp),Zygote做的事情包括:
Android Runtime
- Start a Dalvik VM
- Call Zygote's main()
Zygote
- Register Zygote socket
- Preload all Java classes
- Preload resources
- Start System Server
- Open socket
- Listen for connections
Zygote进程启动SystemServer进程之后,SystemServer进程做的事情包括:
For each service:
-Init service
- Reg. w/ Service Manager(Service Manager进程是在init进程解析init.rc脚本的时候创建的,Service Manager is started by init before any other service)
本文详细介绍了Android系统的启动过程,从Linux内核启动后的第一个用户级进程init开始,解析了init.rc脚本,并启动Zygote进程。Zygote进程负责预加载所有Java类和资源,启动SystemServer进程。SystemServer进程初始化并注册各种系统服务。
4409

被折叠的 条评论
为什么被折叠?



