美文网首页
Android启动流程

Android启动流程

作者: 懒猫1105 | 来源:发表于2019-02-18 16:27 被阅读0次

    Android启动流程

    个人理解的Android启动流程,有没有大佬帮忙看下对不对。

    流程图
    1. Loader层
    • Boot ROM: 当手机处于关机状态时,长按电源键,引导芯片会从固化在ROM里的预设代码开始执行,加载引导程序(Boot Loader)到RAM;
    • Boot Loader: 启动Android系统的引导程序,主要工作是检查RAM,初始化硬件参数,将Android系统拉起来并运行;
    2. Linux Kernel层
    • swapper(pid = 0):第一个进程,是唯一一个没有通过fork或者kernel_thread产生的进程。用于初始化进程管理、内存管理,加载Display Driver,Camera Driver,Binder Driver等
    • kthreadd(pid = 2):swapper通过kernel_thread产生的进程。是所有内核进程的鼻祖,会孵化内核工作线程kworkder,软中断线程ksoftirqd,thermal等内核守护进程
    • init(pid = 1):当内核完成系统设置时,swapper通过kernel_thread产生的进程。是所有用户进程的鼻祖,会孵化ueventd、logd、healthd、installd、adbd、lmkd等用户守护进程;启动servicemanager(binder服务管家)、bootanim(开机动画)等重要服务;孵化Zygote进程,Zygote进程是Android系统的第一个Java进程(即虚拟机进程),Zygote是所有Java进程的父进程
    3. Native层
    • Zygote:init进程通过解析init.rc文件后fork生成。用于加载ZygoteInit类,注册Zygote Socket服务端套接字;加载虚拟机;preloadClasses;preloadResouces。
    • Media Server:由init进程fork而来,负责启动和管理整个C++ framework,包含AudioFlinger,Camera Service,等服务。
    4. Application Framework层
    • System Server:由Zygote进程fork而来,是Zygote孵化的第一个进程。负责启动和管理整个Java framework,包含ActivityManager,PowerManager、WindowManager等服务。
    5. Applications层
    • Launcher:Zygote进程fork生成的第一个App进程,也是用户看到的桌面;Zygote进程还会fork出Browser、Phone、Email等App进程,每个App至少运行在一个进程上。

    相关文章

      网友评论

          本文标题:Android启动流程

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