美文网首页
Android源码分析(八)-----系统启动流程&IPC简述

Android源码分析(八)-----系统启动流程&IPC简述

作者: 一莫言一 | 来源:发表于2019-05-16 16:04 被阅读0次

    一 :系统启动流程图

    从下往上依次启动linux kernel -->zygote-->SystemServer-->NativeService-->AndroidService


    这里写图片描述

    二 : IPC通信

    IPC(Inter-Process Communication)通信,是跨越两个不同进程(Process)之通信。
    一般而言,一个Android应用程序里的各组件(如Activity、Service等)都在同一个进程里执行。这种在同一进程内的通信,又称为短程通信,意味着,两个Activity在同一个进程(Process)里执行。

    相对地,远程(Remote)通信的意思是:两个组件(如Activity或Service)分别在不同的进程里执行;两者之间是IPC通信,又称远程通信。

    三 : IPC通信效率

    当我们启动某一支应用程序(App)时,Android系统里的Zygote服务孵化(Fork)一个新进程(Process)给它,然后将它(该App)加载到这个新诞生的进程里。
    基于Linux的安全限制,以及进程的基本特性(例如,不同进程的地址空间是独立的),如果两个类(或其对象)在同一个进程里执行时,两者沟通方便也快速 。

    但是,当它们分别在不同的进程里执行时,两者沟通就属于IPC跨进程沟通了,不如前者方便,也慢些。

    四 :IPC通信原理图

    这里写图片描述

    在上图里,从JNI本地模块拉了一条红色虚线,表示这并非直接的通信途径。也就是,实际上是透过底层Binder Driver驱动才调用到BBinder的IBinder接口。如下图:

    这里写图片描述

    喜欢源码分析系列可参考其他文章:
    Android源码分析(一)-----如何快速掌握Android编译文件
    Android源码分析(二)-----如何编译修改后的framework资源文件
    Android源码分析(三)-----系统框架设计思想
    Android源码分析(四)-----Android源码编译及刷机步骤
    Android源码分析(五)-----如何从架构师的角度去设计Framework框架
    Android源码分析(六)-----蓝牙Bluetooth源码目录分析
    Android源码分析(七)-----如何解决java编译版本问题

    相关文章

      网友评论

          本文标题:Android源码分析(八)-----系统启动流程&IPC简述

          本文链接:https://www.haomeiwen.com/subject/jsebaqtx.html