Android 系统 Init 进程的初步介绍

Android系统的启动流程

Android init 进程是系统开机启动之后执行的用户空间的第一个进程,它是 Linux 内核启动的第一个进程,在整个系统生命周期内始终存在。init 进程的主要职责是加载系统的配置,启动系统服务,初始化系统。并且管理系统的状态。它在系统启动过程中起着关键作用,是其他进程的父进程。

Init进程的作用:

  • 启动系统的各个服务:通过启动Zygote->SystemServer->系统各种Service(AMS, PMS, WMS, IMS等)
  • 配置系统环境变量和属性。
  • 管理用户空间进程的启动.
  • 初始化硬件设备和挂载文件系统。
  • 处理系统的各种启动和运行时事件。

逐层解释

  1. Loader(引导层)

    • Boot ROM:固化在芯片中的只读存储器,存放最基础的启动代码(第一段可执行代码)。
    • Boot Loader:引导加载程序,负责初始化硬件、加载内核到内存,并启动操作系统。
  2. Kernel(Linux 内核层)

    • Kernel Daemons:内核守护进程,如 kswapd(内存管理)、kworker(工作线程)等。
    • kthreadd(pid=2):内核线程守护进程,负责创建和管理内核线程。
    • swapper(pid=0):空闲进程,当 CPU 无任务时执行。
    • HAL(Hardware Abstraction Layer):硬件抽象层,将硬件驱动接口标准化,供上层调用。
  3. C++ Framework (Native)(本地框架层)

    • Init(pid=1):用户空间的第一个进程,负责启动系统服务和守护进程。
    • Native Daemons:本地守护进程,如 servicemanager、surfaceflinger 等。
    • Media Server:多媒体服务,管理音视频编解码、录制等。
    • AudioFlinger:音频服务,负责音频流的混音和输出。
    • MediaPlayerService:媒体播放服务,提供播放、录制等接口。
  4. Java Framework(Java 框架层)

    • JNI(Java Native Interface):Java 与 C/C++ 代码交互的桥梁。
    • Android Runtime:包含 ART(Android Runtime),负责执行 Dex 字节码。
    • Zygote:Android 特有的进程孵化器,预加载 Java 框架资源,快速创建新应用进程。
  5. System Server(系统服务层)

    这是 Android 系统的核心服务集合,运行在 system_server 进程中:

    • ActivityManager:管理应用生命周期、任务栈。
    • WindowManager:管理窗口、界面布局、输入事件分发。
    • PowerManager:管理电源状态(休眠、唤醒)。
    • InputManager:管理输入设备(触摸、按键)事件。
  6. Apps(应用层)

    • Browser、Launcher、Phone、Email 等系统应用和用户应用,运行在独立的进程。
    • 通过 Binder IPC 与系统服务通信,获取系统资源和服务。

总结流程:

  1. 硬件启动 → Boot ROM → Boot Loader。
  2. 加载内核 → 初始化硬件、进程调度、驱动。
  3. 启动用户空间 → Init → 系统服务与守护进程。
  4. 启动 Java 框架 → Zygote → 系统服务(System Server)。
  5. 启动应用层 → Launcher → 用户交互。
相关推荐
xiangpanf10 小时前
Laravel 10.x重磅升级:五大核心特性解析
android
robotx13 小时前
安卓线程相关
android
消失的旧时光-194313 小时前
Android 面试高频:JSON 文件、大数据存储与断电安全(从原理到工程实践)
android·面试·json
dalancon14 小时前
VSYNC 信号流程分析 (Android 14)
android
dalancon14 小时前
VSYNC 信号完整流程2
android
dalancon14 小时前
SurfaceFlinger 上帧后 releaseBuffer 完整流程分析
android
用户693717500138415 小时前
不卷AI速度,我卷自己的从容——北京程序员手记
android·前端·人工智能
程序员Android16 小时前
Android 刷新一帧流程trace拆解
android
墨狂之逸才16 小时前
解决 Android/Gradle 编译报错:Comparison method violates its general contract!
android
阿明的小蝴蝶17 小时前
记一次Gradle环境的编译问题与解决
android·前端·gradle