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 → 用户交互。
相关推荐
百锦再5 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
2501_916008896 小时前
全面介绍Fiddler、Wireshark、HttpWatch、SmartSniff和firebug抓包工具功能与使用
android·ios·小程序·https·uni-app·iphone·webview
玉梅小洋7 小时前
Windows 10 Android 构建配置指南
android·windows
Libraeking8 小时前
视觉篇:Canvas 自定义绘图与高级动画的华丽圆舞曲
android·经验分享·android jetpack
Fushize9 小时前
多模块架构下的依赖治理:如何避免 Gradle 依赖地狱
android·架构·kotlin
Jomurphys9 小时前
Kotlin - 类型别名 typealias
android·kotlin
Haha_bj10 小时前
Flutter ——flutter_screenutil 屏幕适配
android·ios
Haha_bj10 小时前
Flutter ——device_info_plus详解
android·flutter·ios
前端小伙计10 小时前
Android/Flutter 项目统一构建配置最佳实践
android·flutter
Mr_sun.12 小时前
Day09——入退管理-入住-2
android·java·开发语言