面试总结
init进程做了很多工作,总的来说主要做了以下三件事:
1、创建和挂载启动所需的文件目录
2、初始化和启动属性服务
3、解析 init.rc 配置文件并启动Zygote 进程
//#################################分割线 #################################################
android 系统启动流程前几步
1、启动电源以及系统启动
2、引导程序BootLoader
3、Linux 内核启动
4、init进程启动
//#################################分割线 #################################################
init进程的入口函数
Linux 内核加载完成后,首先在系统文件中寻找init.rc文件,并启动init进程
为了防止僵尸进程的出现,系统会在子进程暂停和终止的时候触发SIGCHLD信号
在UNIX/Linux 中,父进程使用fork创建子进程
//#################################分割线 #################################################
属性服务
windows平台上有一个注册表管理器,注册表的内容采用键值对的形式来记录用户、软件的一些使用信息。即使系统或者软件重启,其还能够根据之前注册表中的记录,进行相应初始化工作,Android也提供了一个类似的机制,叫做属性服务
属性服务最多可以同时为8个试图设置属性的用户提供服务
在linux新内核中,epoll用来替换select,epoll内部用于保存事件的数据类型是红黑树,查找速度快,select采用的数组保存信息,查找速度很慢,只有当等待少量文件描述符时,epoll和select的效率才会差不多
系统属性氛围两种类型:一种是普通属性;还有一种是控制属性,控制属性用来执行一些命令,比如开机动画就使用了这种属性。
//#################################分割线 #################################################