• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

进程间通信IPC与Binder机制原理

android 搞代码 3年前 (2022-03-01) 20次浏览 已收录 0个评论

1, Intent隐式用意携带数据

2, AIDL(Binder)

3, 播送BroadCast

4, 内容提供者ContentProvider

5,Messager(外部通过binder实现)

6,文件共享

7,socket

——————————————–Binder底层原理—————————————-

Binder是一种过程间通信机制,它提供近程过程调用(RPC)性能; Binder作为一个类,它能和不同过程之间进行通信。从英文字面上意思看,Binder具备粘结剂的意思,那么它把什么货色粘结在一起呢?在Android零碎的Binder机制中,由一些零碎组件组成,别离是Client、Server、Service Manager和Binder驱动程序,其中Client、Server和Service Manager运行在用户空间,Binder驱动程序运行内核空间。Binder就是一种把这四个组件粘合在一起的粘结剂了,其中,外围组件便是Binder驱动程序了,Service Manager提供了辅助治理的性能,Client和Server正是在Binder驱动和Service Manager提供的基础设施上,进行Client-Server之间的通信。Service Manager和Binder驱动曾经在Android平台中实现好,开发者只有依照标准实现本人的Client和Server组件就能够了。

总结一下,Android零碎Binder机制中的四个组件Client、Server、Service Manager和Binder驱动程序的关系如下图所示:

1. Client、Server和Service Manager实现在用户空间中,Binder驱动程序实现在内核空间中 2. Binder驱动程序和Service Manager在Android平台中曾经实现,开发者只须要在用户空间实现本人的Client和Server 3. Binder驱动提供设施文件/dev/binder与用户空间交互,Client、Server和Service Manager通过open和ioctl文件操作函数与Binder驱动程序进行通信 4. Client和Server之间的过程间通信通过Binder驱动程序间接实现 5. Service Manager是一个守护过程,用来治理Server,并向Client提供查问Server接口的能力 至此,对Binder机制总算是有了一个理性的意识。

RPC代码是近程调用的办法名,RPC数据是办法的参数. handle是对应服务向ServiceManager注册的索引值. binder协定规定了是发送还是接收数据以及数据格式等内容.

举例:

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

RPC代码是getSystemService, RPC数据则是Context.TELEPHONY_SERVICE, rpc层生成这些数据, ipc层将这些数据与handle,binder协定打包并经binder驱动传输到服务端,服务端解析这些数据从而实现过程间的通信.


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:进程间通信IPC与Binder机制原理

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址