Android开机启动流程

一. 启动架构

当前一些智能设备都是由硬件结合体加上操作系统组装而成,由操作系统控制相应的软件去操作硬件。常见的操作系统有Windows,Android,Linux,MacOS。

Android系统启动过程由图从下往上的可以分为5个过程,然后依次分为Boot Loader -> Kernel -> Native -> Framework -> App,如下图:
在这里插入图片描述
这个启动流程也可以简化成两个阶段:

1.BIOS 阶段:

BIOS 在主板的 ROM 中存储, 加电之后便会启动

2.bootloader 阶段, 读取磁盘上的操作系统:

0 号进程:所有进程的祖先, 这是 Linux 唯一一个没有通过 fork 或者 kernel_thread 产生的进程,初始化进程管理、内存管理, 初始化驱动程序 Display, Camera Driver, Binder Driver 等相关工作;

1 号进程(init 进程):为用户进程, 是所有用户态进程的祖先;

2 号进程:为内核进程, 负责内核态所有进程的管理和调度, 是所有 Linux 内核进程的祖先;

进程的分工可以用如下图总结:

在这里插入图片描述
进程主要分用户进程和内核进程,我们主要看用户进程。

二. init进程

从 Init 进程的启动主要的职责如下:

  1. 挂载文件系统, 创建驱动目录和驱动设备文件;

  2. 解析启动脚本(init.rc);

  3. 执行脚本指令;

    a. 启动服务管理进程(ServiceManager);

    b. 启动图像渲染进程(SurfaceFlinger);

    c. 启动 Zygote 进程;

三. 服务管理进程ServiceManager

从名字上就可以看出来它是用来管理系统中的service,通过Binder去协助获取服务(AMS,PKMS);

  1. 打开 Binder 驱动;

  2. 注册为当前进程为 Binder 上下文的管理者;

  3. 将当前线程注册为 Binder Loop 线程;

在Android,Binder也是Andro

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值