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 → 用户交互。
相关推荐
程序员清洒4 小时前
Flutter for OpenHarmony:GridView — 网格布局实现
android·前端·学习·flutter·华为
running up that hill5 小时前
Android的线性布局
android
m0_748229995 小时前
Laravel9.x核心特性全解析
android
2603_949462107 小时前
Flutter for OpenHarmony社团管理App实战:意见反馈实现
android·flutter
错把套路当深情8 小时前
android两种渠道支持一键打包 + 随意组合各种渠道
android
彬sir哥9 小时前
android studio如何把.gradle从C盘移到D盘
android·gradle·maven·android studio
、BeYourself10 小时前
TabLayout 与 ViewPager2 的基本使用
android·android-studio
南村群童欺我老无力.10 小时前
Flutter 框架跨平台鸿蒙开发 - 城市文创打卡:探索城市文化创意之旅
android·flutter·华为·harmonyos
Madison-No711 小时前
【Linux】文件操作&&重定向原理
android·linux·运维
2603_9494621011 小时前
Flutter for OpenHarmony社团管理App实战:消息中心实现
android·javascript·flutter