android系统启动流程
2017-11-25 14:28
232 查看
1、开机
开始给系统供电,此时硬件电路会产生一个复位时序,包括磁盘、内存、CPU和其他硬件全部要准备就绪,复位完成后,CPU开始执行第一条指令。该指令指向引导程序(Bootloader),其作用是装载真正的应用程序。
2、执行操作系统内核
初始化各种硬件,包括内存、网络接口、显示器、输入设备,建立各种内部数据结构,内核初始化完毕后开始运行具体的应用程序。
3、运行Android程序
通过该程序可以方便的启动其他的应用程序,Android系统相当于被执行的第一个应用程序。Linux系统启动完成后,内核读取init.rc文件,启动Android内核。
4、Framework启动过程:
系统运行的第一个的Dalivik虚拟机程序zygote,接下来所有的Dalivk虚拟机进程都是这个卵孵化出来的,zygote进程主要包括两个主要模块:
Socket服务端。用于接收启动新的Dalivk进程的命令
Framework共享类及共享资源。当zygote进程启动后,会装载一些共享的类及资源,当这些类和资源装载后,新的Dalivk进程就不需要再装载这些类和资源。
zygote孵化出的第一个Dalvik进程叫做SystemServer,SystemServer进程创建了一个Socket客户端,并由Ams负责管理该客户端,之后所有的Dalvik进程都是通过该客户端被启动,当需要启动新的APK进程时,Ams会通过该Socket客户端向Zygote进程的Socket服务端发送一个启动命令,然后孵化出新的进程。
启动各种系统服务线程
SystemServer进程在Android中相当于神经中枢的作用。APK中能够直接交互的大部分系统服务都在此进程中运行,比如Wms、Ams、Pms等。这些系统服务都是以一个线程的形式存在于SystemServer进程中。
启动第一个Activity
当以上服务线程都被启动后,其中Ams服务是最后一个启动的,而在Ams的systemReady()函数中的最后一段代码会发出启动任务队列中最上面一个Activity的消息。用户可以自己设定一个activity作为第一个启动的程序。只要它的intent中添加一个category(Intent.CATEGORY_HOME)。
开始给系统供电,此时硬件电路会产生一个复位时序,包括磁盘、内存、CPU和其他硬件全部要准备就绪,复位完成后,CPU开始执行第一条指令。该指令指向引导程序(Bootloader),其作用是装载真正的应用程序。
2、执行操作系统内核
初始化各种硬件,包括内存、网络接口、显示器、输入设备,建立各种内部数据结构,内核初始化完毕后开始运行具体的应用程序。
3、运行Android程序
通过该程序可以方便的启动其他的应用程序,Android系统相当于被执行的第一个应用程序。Linux系统启动完成后,内核读取init.rc文件,启动Android内核。
4、Framework启动过程:
系统运行的第一个的Dalivik虚拟机程序zygote,接下来所有的Dalivk虚拟机进程都是这个卵孵化出来的,zygote进程主要包括两个主要模块:
Socket服务端。用于接收启动新的Dalivk进程的命令
Framework共享类及共享资源。当zygote进程启动后,会装载一些共享的类及资源,当这些类和资源装载后,新的Dalivk进程就不需要再装载这些类和资源。
zygote孵化出的第一个Dalvik进程叫做SystemServer,SystemServer进程创建了一个Socket客户端,并由Ams负责管理该客户端,之后所有的Dalvik进程都是通过该客户端被启动,当需要启动新的APK进程时,Ams会通过该Socket客户端向Zygote进程的Socket服务端发送一个启动命令,然后孵化出新的进程。
启动各种系统服务线程
SystemServer进程在Android中相当于神经中枢的作用。APK中能够直接交互的大部分系统服务都在此进程中运行,比如Wms、Ams、Pms等。这些系统服务都是以一个线程的形式存在于SystemServer进程中。
启动第一个Activity
当以上服务线程都被启动后,其中Ams服务是最后一个启动的,而在Ams的systemReady()函数中的最后一段代码会发出启动任务队列中最上面一个Activity的消息。用户可以自己设定一个activity作为第一个启动的程序。只要它的intent中添加一个category(Intent.CATEGORY_HOME)。
相关文章推荐
- Android OTA升级原理和流程分析(三)---Android系统的三种启动模式
- android 4.0系统启动代码流程剖析
- Android 系统状态栏和导航栏启动流程
- Android系统启动流程
- 嵌入式linux/Android系统详细启动流程解析
- Android源码(3) --- 系统Launcher 启动流程
- Android系统启动流程 - 1
- rk3188--4.android用initrd文件系统启动流程
- 深入理解Android系统第一弹 - Android启动流程
- Android系统进程Zygote启动流程
- Android系统启动流程 -- linux kernel
- 源码级分析Android系统启动流程
- Android系统启动流程 -- android
- Linux启动流程-bootloader至kernel的过程--android系统启动流程
- Android系统启动流程
- RK29机型之Android系统启动流程
- [Android]Android系统启动流程源码分析
- Android系统的启动流程
- Android电话系统rild-启动流程
- Android系统启动流程 - 2