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 → 用户交互。
相关推荐
千码君20161 小时前
Trae:一些关于flutter和 go前后端开发构建的分享
android·flutter·gradle·android-studio·trae·vibe code
重生之我是Java开发战士5 小时前
【MySQL】事务 & 用户与权限管理
android·数据库·mysql
怣疯knight7 小时前
Windows不安装 Android Studio如何打包安卓软件
android·windows·android studio
ke_csdn7 小时前
从Java演变到Kotlin下的jet pack
android
wenzhangli77 小时前
在低代码设计中践行 Harness Engineering
android·低代码·rxjava
xingpanvip8 小时前
星盘接口开发文档:组合三限盘接口指南
android·开发语言·前端·python·php·lua
TechMix9 小时前
【fkw学习笔记】Android 13 AOSP 源码添加系统预置应用实战指南
android·笔记·学习
云起SAAS9 小时前
私域直播系统UniApp源码 多商户商城+直播带货 微信小程序+H5+安卓iOS
android·微信小程序·uni-app·私域直播系统
空中海9 小时前
01. 安卓逆向基础、环境搭建与授权
android
星河耀银海9 小时前
JAVA 泛型与通配符:从原理到实战应用
android·java·服务器