前言
众所周知的是,Linux中的所有进程都是由init进程创建并运行的。首先Linux内核启动,然后在用户空间启动init进程,再依次启动系统运行的其他进程。在系统启动完成后,init进程会作为守护进程监视其他进程。若是某个监视中的进程一旦终结,进入到僵死状态,它就会释放进程所占用的系统资源。其实,在Android平台中也存在init进程,除了提供以上常见的功能外,还提供几种额外的功能。与Linux类似的是,init进程是在Android启动后,由内核启动的第一个用户级别的进程。
Android的init进程主要提供四大功能,如下所述。
init.rc脚本文件分析与运行
init.rc文件是在init启动后执行的启动脚本文件,文件中记录着init进程执行的功能。在Linux系统中,它被定义在根文件系统中的“/etc/rc.d”目录下,是启动时的可执行文件,在“/etc”目录下保存着设置环境变量的脚本。但在Android系统中,仅使用init.rc与init.{hardware}.rc两个文件,用来定义与执行文件与环境变量。init.rc文件在Android系统运行过程中用于通用的环境及与进程相关的定义,init.{hardware}.rc用于定义Android在不同平台下的特定进程和环境设置等。init.rc文件大致分为两大部分,一部分是以“on”关键字开头的动作列表(action list),另一部分是以“sevice”关键字开头的服务列表。借助系统环境变量或者Linux命令,动作列表用于创建所需目录,以及某些特定文件指定权限,并挂载与系统运行相关的目录。而服务列表用来记录初始化程序需要启动的一些服务。