美文网首页
2018-05-29 摘抄Android 系统启动init

2018-05-29 摘抄Android 系统启动init

作者: 鼓励自己前进 | 来源:发表于2018-05-29 11:27 被阅读0次

一直做应用,感觉没什么发展,想要学习下framework,苦于没有学习的资料和方向,只能慢慢去摸索了,如果有人有过经历可以给个意见,谢谢。

Android的开机启动流程:

Step1 系统加电,执行bootloader。Bootloader负责初始化软件运行所需要的最小硬件环境,最后加载内核到内存。

Step2 内核加载进内存后,将首先进入内核引导阶段,在内核引导阶段的最后,调用start_kernel进入内核启动阶段。start_kernel最终启动用户空间的init程序。

Step3 init程序负责解析init.rc配置文件,开启系统守护进程。两个最重要的守护进程是zygote进程和ServiceManager,zygote是Android启动的第一个Dalvik虚拟机,ServiceManager是Binder通讯的基础。

Step4 zygote虚拟机启动子进程system_server,在system_server中开启了核心系统服务,并将系统服务添加到ServiceManager中,然后系统进入SystemReady状态。

Step5 在SystemReady状态,ActivityManagerService与zygote中的socket通信,通过zygote启动home应用,进入系统桌面。

**从Step3开始,init启动后,上层的实现:

Step1 init启动的核心Daemon服务包括Android的第一个Dalvik虚拟机zygote。 

Step2 zygote定义一个socket,用于接受ActivityManagerService启动应用的请求。 

Step3 zygote通过fork系统调用创建system_server进程 

Step4 在system_server进程中,将会启动系统核心服务以及其他服务。 

Step5 系统服务启动后会注册到ServiceManager中,用于Binder通信。 

Step6 ActivityManagerService进入systemReady状态。 

Step7 在systemReady状态,ActivityManagerService会与zygote的Socket通信,请求启动Home。                    Step8 zygote收到AMS的连接请求后,执行runSelectLoopMode处理请求。                                                             Step9 zygote处理请求会通过forkAndSpecialize启动新的应用进程,并最终启动Home。

******************************************

init.c(启动)文件分析:创建目录,klog_init()将log重定向到proc、kmsg中,property_init()初始化环境变量,get_hardware_name()得到硬件信息和版本,process_kernel_cmdline()解析内核启动参数,property_load_boot_defaults()导入默认环境变量,get_kernel_cmdline_partitions()得到系统分区

******************************************

init.rc(启动脚本)分析:1import(导入其他脚本rc),2on(设置某些操作时间),3services(比如system/bin/install等被init守护),4cmd

********************************************

init进程分析 1 init_parse_config_file解析启动脚本  2action_for_each_tragger 将解析脚本中对应操作加入action_queue队列中 3queue_builtin_action将解析脚本中对应操作加入action_queue队列中 4创建并守护进程

*****************************************************

init进程

附录:https://blog.csdn.net/dd864140130/article/details/57624948

文档摘抄自(https://blog.csdn.net/h655370/article/details/77727554)

相关文章

网友评论

      本文标题:2018-05-29 摘抄Android 系统启动init

      本文链接:https://www.haomeiwen.com/subject/rtiojftx.html