参考书籍(Android框架揭秘-)
1.framework概要
1.1 framework层模块
am、 wm、 content providers、View system、notification manager、pm、tm、resource manager、location manager
1.2 启动过程
bootloader->初始化linux内核->init进程
init进程初始化daemon进程、context manager、media sever、zygote
1.3 主要进程
Context manager:管理系统服务的进程,应用进程调用系统服务过程
详细见5.3Binder寻址
System View进程:创建系统服务
zygote
1.4 init进程
查找并执行init文件
static int noinline init_ post(void)
if (execute_ command) f
run_ init process(execute command);
}
run init_ process("/sbin/init");
run init_ process(" /etc/init");
run_ init process(" /bin/init");
run_ init_ process(" /bin/sh");
}
init进程功能:
分析init.rc文件 -->运行服务列表
生成设备驱动节点
处理子进程终止—>重启子进程
属性服务
init进程注册信号处理器,接收子进程终止的信号
创建并挂载需要的文件目录
mkdir("/dev", 0755);
mkdir("/proc", 0755);
mkdir("/sys", 0755);
mount("tmpfs", " /dev", "tmpfs", 0, "mode=0755" );
mkdir("/dev/pts", 0755);
mkdir("/dev/socket", 0755);
mount("devpts", " /dev/pts", "devpts", 0, NULL);
mount("proc", " /proc", "proc", 0; NULL);
mount("sysfs", "/sys", "'sysfs", o, NULL);
sysfs
init进程生成输出设备
解析init.rc文件
init.rc 文件在Android系统运行过程中用于通用的环境设置及与进程相关的定义
init. {hardware}.rc用于定义Android在不同平台下的特定进程和环境设置等
parse init.rc --> service list && action list
生成静态节点文件
共享内存中生成属性域,设置一些属性
显示logo
执行action list中与init区块相关的命令
启动属性服务
子进程向init进程提交申请来修改属性值,通过socket
在poll中注册文件描述符,设置事件处理循环