未命名文件(3).png首先是init进程启动,init进程是Android系统用户空间中启动的第一个进程,启动之后加载配置文件,init.rc文件中存放的主要就是一些可执行程序路径的参数;负责启动zygote进程和其他系统服务进程启动进程:1、fork+handle2、fork+execve清空了父进程继承过来的环境zegote进程启动之后执行了execve调用,调用加载了一个可执行程序,所以zygote进程虽然是init进程启动的,但是没有继承init进程的属性1、创建虚拟机2、注册关键的JNI接口3、切换到java调用4、preload资源5、启动systemserver进程6、Loop
未命名文件(3).png首先是init进程启动,init进程是Android系统用户空间中启动的第一个进程,启动之后加载配置文件,init.rc文件中存放的主要就是一些可执行程序路径的参数;负责启动zygote进程和其他系统服务进程启动进程:1、fork+handle2、fork+execve清空了父进程继承过来的环境zegote进程启动之后执行了execve调用,调用加载了一个可执行程序,所以zygote进程虽然是init进程启动的,但是没有继承init进程的属性1、创建虚拟机2、注册关键的JNI接口3、切换到java调用4、preload资源5、启动systemserver进程6、Loop
Binder通信过程1.首先,一个进程使用BINDER_SET_CONTEXT_MGR命令通过Binder驱动将自己注册成为ServiceManager2.Server通过驱动向ServiceManager中注册Binder(Server中的Binder实体),表明可以对外提供服务。驱动为这个Binder创建位于内核中的实体节点以及ServiceManager对实体的引用,将名字以及新建的引用打包传给ServiceManager,ServiceManger将其填入查找表。3.Client通过名字,在Binder驱动的帮助下从ServiceManager中获取到对Binder实体的引用,通过这个
Binder通信过程1.首先,一个进程使用BINDER_SET_CONTEXT_MGR命令通过Binder驱动将自己注册成为ServiceManager2.Server通过驱动向ServiceManager中注册Binder(Server中的Binder实体),表明可以对外提供服务。驱动为这个Binder创建位于内核中的实体节点以及ServiceManager对实体的引用,将名字以及新建的引用打包传给ServiceManager,ServiceManger将其填入查找表。3.Client通过名字,在Binder驱动的帮助下从ServiceManager中获取到对Binder实体的引用,通过这个