《Android的设计与实现:卷I》——第3章 3.3init进程的执行过程

简介: 本节书摘来自华章出版社《Android的设计与实现:卷I》——第3章,第3.3节。作者: 杨云君著.更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.3 init进程的执行过程

init进程是用户空间的第一个进程,进程号为1。Android世界中,很多重要的工作都是从它开始的。
init进程相关源码位于/system/core/init目录下,从其编译文件Android.mk中可以看到这部分源代码最终被编译为可执行文件init,代码如下:

1
2
3
4

注意 pollfd是Linux中定义的结构体,用于存放需要监控事件的文件描述符,其定义如下:
struct pollfd {
int fd; //需要监控的文件描述符
short events; //监控fd上的事件,由调用方设置

short revents;    //fd上发生过的事件,由返回方设置
};

poll的函数原型如下:

int poll(struct pollfd fds[], nfds_t nfds, int timeout);

nfds:用于标记fds[]中结构体元素的总数。

timeout:用于标记poll函数调用的阻塞事件,单位是毫秒。如果timeout=0,则poll不阻塞,直接返回。poll返回fds中revents不为0的fd个数;如果超时没有任何事件发生,返回0;失败时,返回-1。
通过对init.c文件中main函数的分析,可以将init的执行过程分为以下四个阶段:

1)初始化文件系统和日志系统,为之后的执行阶段做准备。这部分主要是Linux标准函数的调用。

2)解析 init.rc和init..rc初始化文件。

3)触发需要执行的Action和Service。

4)init循环监听处理事件。init触发所有Action后,进入一个无限循环,执行在可执行队列中的命令,重启异常退出的Service,并循环处理来自property service(属性服务)、signal和keychord的事件。

第一阶段很容易理解,都是基本的Linux函数调用。接下来,将针对其余三个阶段详细讲解init的运行过程。

相关文章
|
2月前
|
Java Android开发 数据安全/隐私保护
Android中多进程通信有几种方式?需要注意哪些问题?
本文介绍了Android中的多进程通信(IPC),探讨了IPC的重要性及其实现方式,如Intent、Binder、AIDL等,并通过一个使用Binder机制的示例详细说明了其实现过程。
294 4
|
3月前
|
API Android开发
Android P 性能优化:创建APP进程白名单,杀死白名单之外的进程
本文介绍了在Android P系统中通过创建应用进程白名单并杀死白名单之外的进程来优化性能的方法,包括设置权限、获取运行中的APP列表、配置白名单以及在应用启动时杀死非白名单进程的代码实现。
62 1
|
3月前
|
Android开发
我的Android进阶修炼:安卓启动流程之init(1)
本文深入分析了Android系统中的init进程,包括其源码结构、主要功能以及启动流程的详细注解,旨在帮助读者理解init作为用户空间的1号进程在Android启动过程中的关键作用。
57 1
|
3月前
|
Android开发 开发者 Kotlin
Android 多进程情况下判断应用是否处于前台或者后台
本文介绍在多进程环境下判断Android应用前后台状态的方法。通过`ActivityManager`和服务信息`RunningAppProcessInfo`可有效检测应用状态,优化资源使用。提供Kotlin代码示例,帮助开发者轻松集成。
260 8
|
4月前
|
弹性计算 DataWorks 关系型数据库
DataWorks操作报错合集之DataX在执行过程中接收到了意外的信号15,导致进程被终止,该怎么处理
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
大数据 Linux Android开发
Android ParcelFileDescriptor实现进程间通信
Android ParcelFileDescriptor实现进程间通信
82 0
|
6月前
|
XML 前端开发 Android开发
Android架构设计——MVC(1),Android多进程从头讲到尾
Android架构设计——MVC(1),Android多进程从头讲到尾
|
Java Linux Android开发
理解Android进程创建流程
理解Android进程创建流程
106 0
|
6月前
|
安全 Linux API
Android进程与线程
Android进程与线程
50 0
|
Shell Android开发
Android init language与init.rc初始化脚本
Android init language与init.rc初始化脚本
85 0

相关实验场景

更多
下一篇
无影云桌面