系统启动流程
文章平均质量分 85
安卓系统启动流程
一切皆是定数
这个作者很懒,什么都没留下…
展开
-
Android系统启动流程(一)——Init进程(基于Android13)
Init进程由内核拉起,是用户空间的第一个进程,查看内核代码看execute_command判断,这个是BootLoader传递过来的参数,一般为/init,如果没有这个则会在/sbin/init:/etc/init:/bin/init:/bin/sh中找init。我们的手机根目录是有init这个可执行文件的关联的是/system/bin/init这个文件所以启动的是这个init可执行文件,也从而执行的是其中的main函数。原创 2023-04-16 10:58:30 · 857 阅读 · 1 评论 -
Android系统启动流程(二)——Selinux初始化(基于Android13)
Selinux,全称为Security-Enhanced Linux,即安全增强型Linux,是Linux中的一种安全管控策略。传统的Linux访问控制通过DAC(Discretionary Access Control)控制,即给用户、用户组、其他用户授予不同的读写和可执行权限来控制文件的访问。Selinux基于MAC(Mandatory Access Control)控制,基于安全上下文和安全策略的安全机制,只有定义了允许访问的规则的才能访问,否则默认不能访问。原创 2023-04-16 10:59:42 · 1587 阅读 · 2 评论 -
Android系统启动流程(三)——属性服务(基于Android13)
属性服务的启动在init进程中,init进程初始化的第二阶段初始化中启动了属性服务。原创 2023-05-06 19:16:53 · 679 阅读 · 0 评论 -
Android系统启动流程(四)——rc文件解析(基于Android13)
rc文件由安卓初始化语言编写,可用于初始化系统服务,设置属性,创建系统资源等操作。rc文件在init进程中完成扫描,解析,加载,执行等操作。原创 2023-05-08 21:55:31 · 2158 阅读 · 2 评论 -
Android系统启动流程(五)——init进程对子进程的监控(基于Android13)
init进程会读取rc文件,然后孵化很多其他系统服务进程,为防止子进程死亡后称为僵尸进程,init需要监测子进程是否死亡,如果死亡,则清除子进程资源,并重新拉起进程。使用epoll注册监听信号量fd,子进程死亡会发送信号给init进程,这里就会调用epoll中注册的回调函数HandleSignalFd。这里清除了进程的资源,并设置该进程标志为SVC_RESTARTING,并启动rc中定义的onrestart相关服务。init进程第二阶段启动的时候,创建了epoll,并将子进程相关处理注册到epoll中。原创 2023-05-08 22:13:42 · 474 阅读 · 0 评论 -
Android系统启动流程(六)——Zygote启动流程(基于Android13)
Zygote进程是所有应用进程的孵化器,由init进程通过读取rc文件启动。init.rc中引入zygote的rc文件,当class_start main时,会加载所有class定义为main的service这里zygote的定义就是main,所以zygote进程会被启动执行app_process64或者app_process32这两个可执行文件。原创 2023-07-31 21:29:24 · 390 阅读 · 0 评论 -
Android系统启动流程(七)——SystemServer进程(基于Android13)
SystemServer是重要的进程,该进程中运行了AMS、PMS等重要的系统服务SystemServer进程由zygote fork而出SystemServer执行完加载系统服务后,进入死循环接收消息。原创 2023-08-13 16:14:02 · 302 阅读 · 0 评论