加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

Android系统启动过程畅聊

发布时间:2021-12-18 18:08:09 所属栏目:教程 来源:互联网
导读:一、 系统启动流程简介 在Linux内核启动后,init 1(1号进程)将作为第一个用户空间(Linux虚拟内存的大小为232(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节供内核使用,称为内核空间。而较低的3G字节供各个进程使用,称为用户空间。)的
一、 系统启动流程简介
在Linux内核启动后,init 1(1号进程)将作为第一个用户空间(Linux虚拟内存的大小为232(在32位的x86机器上),内核将这4G字节的空间分为两部分。最高的1G字节供内核使用,称为“内核空间”。而较低的3G字节供各个进程使用,称为“用户空间”。)的进程来启动Android系统,该启动流程可以分为如下5个阶段,如下图:
 
 
 
 
 
(1) 启动准备:该阶段包括创建文件系统的基本目录、打开基本输入、输出设备,初始化日志功能等;
 
(2) 解析init.rc文件:该阶段对init.rc脚本文件进行解析,主要对Service(服务)和Action(动作)进行解析。其中,Service由命令(Command)和一系列服务的附加内容(Option,选项)组成,如:“service vold /system/bin/vold”为一个Service,而“socket vold stream 0660 root mount“则为配合该服务使用的Option;Action则由一系列的命令组成,如:“on init mkdir /system”为系统初始化时建立系统文件夹的Action;
 
(3) 触发需要执行的action:Action需要在Triggers(触发条件)中调用,本阶段对需要执行的Action进行触发,并根据触发条件将需要执行的Action放入Action队列;
 
(4) 执行在action队列中的命令:对上一阶段触发的Action以及Service进行执行。并在此过程中,派生了Zygote和Service Manager两个非常重要的进程;
 
(5) 循环处理事件:init进程进入无限循环,处理设备插入/拔出,服务属性状态变化和signal事件等。

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读