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 → 用户交互。
相关推荐
日光明媚2 小时前
一步生成视频!One-Forcing:DMD + 零成本 GAN,训练 200 步超越多步 SOTA
android·开发语言·kotlin
帅次3 小时前
Android 17 开发者实战:核心更新与应用场景落地指南
android·java·ios·android studio·iphone·android jetpack·webview
大鹏说大话3 小时前
SQL 排序与分组实战:解决“分组后取最新数据“
android·java·数据库
搜狐技术产品小编20236 小时前
破局与重构:纯端侧 Android 自动化引擎的尝试与未来推演
android·运维·重构·自动化
码云骑士6 小时前
Android SystemServer启动过程
android·systemserver
weiggle7 小时前
第三篇:可组合函数(Composable)——Compose 的基石
android·前端
独隅8 小时前
Android Studio 接入多种不同 AI 大模型进行开发的全面详细指南(Android Studio+AI)
android·人工智能·android studio
夜微凉48 小时前
三、MySQL
android·数据库·mysql
我命由我123458 小时前
Android 开发问题:项目同时引入了两个包含相同类文件的库(AndroidX 库、旧版本支持库),导致了重复类错误
android·java·java-ee·android studio·android-studio·androidx·android runtime
anthonyzhu9 小时前
安卓Android studio panda run无法应用更新的问题
android·ide·android studio