Binder进程通信的基本原理

2017-07-24  本文已影响98人  MathiasLuo

Binder进程通信的基本原理

基础

ProcessState

ProcessState是进程单例的,会去打开/dev/binder驱动,并且mmap到当前进程的内存空间
一个进程开始的时候就会初始化一个ProcessState,然后就会去开始binder线程池循环等待指令到来

IPCThreadState

IPCThreadState是线程单例,会去和binder驱动直接交互

BpBinder

Binder的代理对象,其中主要就是持有mHandle(编号),在和Binder驱动交互的时候使用mHandle来寻找Binder服务,对应native层的Binder

Binder驱动

思想

在一块大家都可以访问的内存中进行数据和指令的交换,而不同进程中主要靠thread的循环等待指令(事件驱动),但是这样交互很繁杂,所以又抽离出了一个manager(ServiceManager)

每一个进程开始的时候都会进行ProcessState的初始化,会去打开驱动,并提供接口去获取mHandle=0Binder,同时也会让自己的Binder线程池循环起来。

binder的调动的是阻塞的,阻塞的原理还是循环。所以客户端的binderIPC请求最好放到子线程去执行。

上一篇 下一篇

猜你喜欢

热点阅读