android是基于linux内核的,因此android的init进程是android应用程序的第1个进程。下面简要说明一下该进程的处理流程,后续还要进一步细化。

1.注册处理子进程的信号处理函数

2.在根目录下创建系统目录以及mount必要的文件系统

3.在/dev目录下创建null和kmsg设备节点

4.解析/init.rc文件

5.解析/proc/cmdline文件获取必要的参数,如:qmeu, console, bootloader等

6.通过分析/proc/cpuinfo获取硬件类型,从而进一步解析/init.硬件类型.rc文件

7.执行early-init部分的服务

8.根据netlink(/sys/block,/sys/class,/sys/devices)在/dev目录下生成设备节点

9.读取/default.prop文件描述的属性

10.对于启动内核的cmdline中有console的情况则在/dev/目录下创建该设备节点

11.在屏幕上显示“ANDROID”字样(android虚拟机上能看到)

12.进一步解析/proc/cmdline文件且设置对应的属性和值

13.根据第5步骤分析的参数设置指定的属性和值

14.执行init部分的服务

15.读取系统属性文件且创建socket监听

16.创建本地socket监听退出的子进程

17.执行early-boot和boot部分的服务

18.执行所有属性对应的服务

19.执行所有的action队列

20.重新启动需要启动的进程

21.监听子进程退出文件描述符、属性socket文件描述符、设备变化文件描述符,当对应的文件描述符有变化则调用对应的处理函数处理

22.重新回到第19步


更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android(java)学习笔记135:Android中assets文件夹资源的访问
  4. android Manifest.xml全局配置文件中根标签中package属性及标签
  5. Xmlns:android
  6. Java多种方式动态生成doc文档
  7. Android中给View设置阴影的三种方式
  8. Android高手进阶教程(四)之----Android(安卓)中自定义属性(attr.
  9. Android(安卓)add prebuilt lib(*.so) to Android.mk

随机推荐

  1. 访问器属性与获取dom元素
  2. CentOS8使用阿里云yum源异常
  3. PHP函数与变量声明与调用总结
  4. PHP变量与函数的声明,使用与参数实例演示
  5. PHP变量与函数的声明,使用与参数实例
  6. 在线客服系统源码/PHP客服系统下载附php
  7. 变量与函数的声明,使用与参数实例演示
  8. php中变量与函数的声明及使用
  9. Android(安卓)- How to mount NFS in emu
  10. Android总结