AOSP 8.0 系统启动概要

该文详细阐述了Android系统从电源启动到Systemserver运行的完整过程,包括BootLoader加载内核、init进程初始化、Zygote进程创建、ART虚拟机启动以及systemserver管理各种服务。重点讨论了父进程(如init,Zygote)和重要重量级进程(如system_server,mediaserver,servicemanager)的角色和功能。

目录

系列专题

一、Android 系统启动流程图

二、系统启动阶段

三、系统重要进程

3.1 父进程

3.2 重量级进程



系列专题

AOSP 8.0 系统启动之一--内核启动​​​​​​​
AOSP 8.0 系统启动之二--init启动(一)​​​​​​​​​​​​​​​​​​​​​

AOSP 8.0 系统启动之二--init启动(二)

​​​​​​​AOSP 8.0 系统启动之二--init启动(三)​​​​​​​

AOSP 8.0 系统启动之三--Zygote启动(一)

AOSP 8.0 系统启动之三--Zygote启动(二)

AOSP 8.0 系统启动之四--ART虚拟机启动(一)

​​​​​​​​​​​​​​AOSP 8.0 系统启动之四--ART虚拟机启动(二)

AOSP 8.0 系统启动之五--systemserver启动(一)

AOSP 8.0 系统启动之五--systemserver启动(二)

AOSP 8.0 系统启动之五--systemserver启动(三)

一、Android 系统启动流程图

备注:(图片引用gityuan)

二、系统启动阶段

  • step1. 启动电源及系统:

        电源按下后,引导芯片开始将固化在ROM中的BootLoader加载至RAM中,并执行该程序;

  • step2. 引导程序BootLoader:

        引导程序BootLoader是在Android操作系统开始运行前,执行的一个小程序,其主要作用是把系统OS拉起来并运行;

  • step3. Linux内核启动:

        内核启动时,设置缓存、被保护存储器、计划列表和加载驱动等,完成设置后,开始加载init.rc文件;

  • step4. init进程启动:

        开始初始化和启动属性服务,创建Zygote进程。    

  • step5. Systemserver启动: 

        初始化各种app 管理的服务,如AMS,WMS,PMS等等。

  • step6. 各种系统APP、三方App 启动:

三、系统重要进程

3.1 父进程

在所有进程中,以父进程的姿态存在的进程,如下:

  • idle进程:是Linux系统第一个进程(pid = 0 ),是init进程和kthreadd进程的父进程
  • kthreadd进程 : 是所有内核进程的父进程
  • init进程  : 是所有用户进程的父进程(或者父父进程)
  • zygote进程 : 是所有上层Java进程的父进程,另外zygote的父进程是init进程。

3.2 重量级进程

在Android进程中,有几个非常重要的进程

  • system_server:​​​​​​​​​​​​​​是由zygote孵化而来的,是zygote的首席大弟子,托起整个Java framework的所有service,比如ActivityManagerService, PowerManagerService等等。
  • mediaserver:是由init孵化而来的,托起整个C++ framework的所有service,比如AudioFlinger, MediaPlayerService等等。
  • servicemanager:是由init孵化而来的,是整个Binder架构(IPC)的大管家,所有大大小小的service都需要先请示servicemanager。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值