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

本文概述了Android系统中的Binder机制,包括Client-Server模型、ServiceManager、Binder驱动及其实现原理。重点讲解了进程间通信(IPC)过程,如Intent、AIDL、广播、ContentProvider和Messager的使用,以及如何通过Binder驱动进行数据交换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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驱动程序的关系如下图所示:
在这里插入图片描述

![在这里插入图片描述](https://img-blog.csdnimg.cn/e4f305214ff24fa8ad5eacdcd87c0a33.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lic5pa56bii5bC-5oqE,size_18,color_FFFFFF,t_70,g_se,x_16#pic_center

  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驱动传输到服务端,服务端解析这些数据从而完成进程间的通信.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值