Android手机的开机流程

1.开机流程示意图

Android系统结构体系
image.png
  • App应用层级

  • FrameWork层 ( AMS WMS PMS)

  • Native C/C++ Libraries层

  • Hardware Abstraction Layer (HAL )
    硬件厂商提供各种接口,调用底层驱动,而不会把和核心底层代码贡献出来.

  • Linux Kernel (Drivers驱动 BluthTooth Camera WIFI USB Audio)

2.Android系统启动流程

image.png

image.png
  • 当电源按下,会引导芯片代码从ROM(read-only-momory)开始执行,加载引导程序Loader到RAM(read-access-memory),然后开始执行.

  • 启动linux内核,初始化init进程(第一个用户空间进程),加载各种驱动 bluthtooth wifi camera usb等相关工作.


    1731576916397.png
  • init进程会fork 一个Zygote进程,并启动,同时也会启动ServiceManager(binder服务管家)。

  • Zygote进程初始化AndroidRuntime环境,启动虚拟机,注册JNI方法,执行ZygoteInit.main()函数,创建Zygote的Socket服务,fork SystemServer进程 ,zygoteServer.runSelectLoop()进入无限循环,当System Server进程启动 AMS, PMS ,WMS等等各种服务.

  • 最后到 App

3. Zygote启动流程

1730863303799.png
  • 初始化 AndroidRuntime (Android应用执行Java代码的运行环境)
  • 启动runtime
    创建虚拟机 ,注册Jni方法,使用JNI调用ZygoteInit的main()方法
  • ZygoteInit.main
    new ZygoteServer()创建Zygote的socket服务
    r=forkSystemServer() r.run()执行main方法
    zygoteServer.runSelectLoop()进入无线循环。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容