再次将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)