Android FrameWork(一)
第一个启动的程序—init
知识回顾:
源码分析:
main.cpp入口
—>first_stage_init.cpp 挂载文件系统文件
init.cpp 首先初始化内存空— 创建Epoll—InstallSignalFdHandler(Epoll)注册Epoll监听—startPropertyService 调用函数把服务拉起来
property_service.cpp
创建CreateSocket 创建监听LoadBootScripts 加载配置文件 创建解析器parser
拓展知识:
-
Android的架构分层:
application
framework
libraries runtime
linux
-
I/O多路复用
Select-->poll—>epoll 区别
Select -->数组 大小限制1024. 性能
Poll -->链表 没有大小限制 性能 系统上下文切换
Epoll-->红黑树 O(1)基于事件 fd 写操作唤起对应读操作端
总结:
1,FirstStageMain()挂在文件系统以及创建目录 调用selinux_setup
2,上线文审查
3,属性服务开启,创建Epoll 注册监听Epoll 子进程的一些情况 (重启异常操作等,对子进程进行线程守护)
4,startPropertyServic 开启属性服务 进行监听
5,LoadBootScripts 加载init.rc文件 进行解析 调用do_class_service文件
6,init.rc