android启动过程
来源:互联网 发布:linux解压war包 编辑:程序博客网 时间:2024/06/05 14:30
android的启动过程还是不复杂的,但要真去研究其语言实现确实是很麻烦的事。查找了相关资料,这里只给出启动过程的大致分析。
一、系统加电,执行bootloader。其负责初始化软件运行所需的最小硬件环境,最后加载内核到内存中。
二、内核加载进内存后,将首先进入内核引导阶段,在引导阶段最后,调用start_kernel进入内核启动阶段。最终启动用户空间的init程序。
三、init程序负责解析init.rc配置文件,开启系统守护进程。两个最重要的守护进程是zygote和ServiceManager。前者是android启动的第一个Dalvik虚拟机,它将负责启动Java世界的进程;后者是Binder通信的基础。
四、zygote启动子进程system_server,在中开启了android核心系统服务并将核心系统服务添加到ServiceManager,然后系统进入systemReady状态。
五、在systemReady下,ActivityManagerService与zygote中的socket通信,通过zygote启动Home应用。
注:zygote是android中一个非常重要的守护进程服务,所有其他Dalvik虚拟机进程都是通过zygote复制出来的,即调用了fork函数(一个进程调用了fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间,然后把原来的进程的所有值都复制到新的进程中,只有少数值与原来的进程的值不同,相当于克隆了一个自己)。android引用程序有Java编写,运行在各自独立的Dalvik虚拟机中。如果每个应用程序在启动之时都需要单独运行和初始化一个虚拟机,会大大降低系统性能,因此先创建一个Dalvik虚拟机,然后通过它孵化出其他的虚拟机进程,进而共享虚拟机内存和框架层资源,可大大提高应用程序启动和运行速度。
0 0
- android启动过程
- Android 启动过程
- Android 启动过程汇总
- android 启动过程 [ZZ]
- [转]android启动过程
- Android的启动过程
- Android 启动过程总结
- android 启动过程
- Android 启动过程总结
- 1. Android启动过程
- Android启动过程
- Android 开机启动过程
- Android 启动过程
- Android 启动过程
- android启动过程
- Android 启动过程
- android的启动过程
- Android 启动过程
- 走进IBM开放云平台——Bluemix ( 上海meetup, 2015.10.31, 新天地 )
- ubuntu Qt5环境变量设置
- 回调函数简单解释
- 数组 基本用法和排序
- linux内核中的GPIO系统之(1):软件框架
- android启动过程
- 关于androidstudio使用svn的注意事项
- mysql 优化 一些简单实用的原则
- CPU GPU设计工作原理
- linux内核中的GPIO系统之(2):pin control subsystem
- 彻底解决Android 应用方法数不能超过65K的问题
- php中的输入流
- Android实战简易教程-第六十六枪(结合SharedPreferenced实现自动登录功能)
- ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction差别