美文网首页
Android系统启动流程

Android系统启动流程

作者: dreamkid | 来源:发表于2020-07-21 10:12 被阅读0次

    我们在按下电源键到开机整个过程中系统是如何启动的呢

    1.加载bootloader

    按下电源时引导芯片代码从预定义的地方(固定rom)开始执行,加载引导程序bootloader到RAM执行

    2.Linux内核启动

    bootloader是Android系统运行前的一个小程序,目的是将系统os拉起来

    3.启动init进程

    Linux内核启动后,经过一系列系统设置并查找init.rc文件解析并启动init进程,init进程会初始化和启动属性服务,挂载目录,启动Zygote进程

    4.Zygote进程启动

    Zygote进程会创建Dvm,创建服务端socket等待ActivityManagerService请求Zygote创建新的应用程序进程,启动SystemServer进程

    5.SystemServer进程启动

    SystemServer进程启动Binder线程池来进行进程间通信,创建SystemServiceManager启动各种系统服务

    6.启动Launcher

    Launcher启动后会将已安装的应用程序图标显示在桌面上

    启动流程图如下:

    image

    Binder线程池

    Android进程间通信使用Binder机制,binder线程池用来进程间通信的

    SystemServer进程

    用来创建和管理各种系统服务如AMS,PMS等

    Android系统启动何时进入Java框架层的呢?
    init进程启动是通过app_main.cpp的main方法启动的,在main方法中通过AppRuntime的start方法启动init进,ApRuntime继承AndroidRuntime,在AndroidRuntime的start方法中用JNI的方式调用了ZygoteInit的main方法,此时就进入了Java框架层.

    感谢
    https://www.jianshu.com/p/46d9d625563a
    https://www.jianshu.com/p/1d3e722871e8
    https://blog.csdn.net/itachi85/article/details/56669808

    相关文章

      网友评论

          本文标题:Android系统启动流程

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