framework-android启动

1:BootRom->BootLoader->Linux Kernel->Init->Zygote-
>SystemServer->Launcher
BootLoader 层:主要包括 Boot Rom Boot Loader
Kernel 层:主要是 Android 内核层
Native 层:主要是包括 init 进程以及其 fork 出 来的用户空间的守护
进程、 HAL 层、开机动画等
JAVA Framework 层:主要是 AMS PMS Service 的初始化
Application 层:主要指 SystemUI Launcher 的启动
2:
Android 系统启动流程:
第一步:手机开机后,引导芯片启动,引导芯片开始从固化在
ROM 里的预设代码执行,加载引导程序到到 RAM bootloader
RAM ,初始化硬件参数等功能;
第二步:硬件等参数初始化完成后,进入到 Kernel 层, Kernel
主要加载一些硬件设备驱动,初始化进程管理等操作。在 Kernel
中首先启动 swapper 进程( pid=0 ),用于初始化进程管理、内管
管理、加载 Driver 等操作,再启动 kthread 进程 (pid=2), 这些 linux
享学课堂 系统的内核进程, kthread 是所有内核进程的鼻祖;
第三步: Kernel 层加载完毕后,硬件设备驱动与 HAL 层进行交互。
初始化进程管理等操作会启动 INIT 进程 ,这些在 Native 层中;
第四步: init 进程 (pid=1 init 进程是所有进程的鼻祖,第一个启
) 启动后,会启动 adbd logd 等用户守护进程,并且会启动
servicemanager(binder 服务管家 ) 等重要服务,同时孵化出
zygote 进程,这里属于 C++ Framework ,代码为 C++ 程序;
第五步: zygote 进程是由 init 进程解析 init.rc 文件后 fork 生成,它
会加载虚拟机,启动 System Server(zygote 孵化的第一个进程 )
System Server 负责启动和管理整个 Java Framework ,包含
ActivityManager WindowManager PackageManager
PowerManager 等服务;
第六步: zygote 同时会启动相关的 APP 进程,它启动的第一个 APP
进程为 Launcher ,然后启动 Email SMS 等进程,所有的 APP 进程
都有 zygote fork 生成
3:
init 进程是 linux 系统中用户空间的第一个进程,进程号为 1.
享学课堂 bootloader 启动后,启动 kernel kernel 启动完后,在用户空
间启动 init 进程,再通过 init 进程,来读取 init.rc 中的相关配置,从
而来启动其他相关进程以及其他操作。
init 进程被赋予了很多重要工作, init 进程启动主要分为两个阶
段:
第一个阶段完成以下内容:
ueventd/watchdogd 跳转及环境变量设置
挂载文件系统并创建目录
初始化日志输出、挂载分区设备
启用 SELinux 安全策略
开始第二阶段前的准备
第二个阶段完成以下内容:
初始化属性系统
执行 SELinux 第二阶段并恢复一些文件安全上下文
新建 epoll 并初始化子进程终止信号处理函数
设置其他系统属性并开启属性服务
init进行第三阶段主要是解析 init.rc 来启动其他进程,进入无限循
环,进行子进程实时监控。
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值