安卓IPC机制学习

安卓IPC机制学习

参考:

https://my.oschina.net/keeponmoving/blog/64218

http://blog.csdn.net/luoshengyang/article/details/6618363

http://blog.cgsdream.org/2015/11/09/binder-analysis/

IPC机制:

是什么:

IPC是Inter-Process-Communication的缩写,意思是进程间通信或者跨进程通信;

在linux中通信方式:

1.socket; 2.name pipe命名管道;3.message queue消息队列; 4.singal信号量; 5.share memory共享内存;

在Java系统通信方式:

1.socket; 2.name pipe;

在Android系统通信方式:

1.AIDL,2.Messenger,3.Socket,4.ContentProvider。这些通信方式其底层都是基于的Binder通信。

为什么:

进程都有自己独立的资源和内存空间,其它进程不能任意访问当前进程的内存和资源,系统给每个进程分配的内存会有限制。为了能让每个进程能够通信,我们建立了ipc机制。去解决这个问题。

普通IPC基本原理:

发送方将数据存放在缓存区中,调用API通过系统调用进入内核中。内核服务程序在内核空间分配内存,将数据从发送方缓存区复制到内核缓存区中。

接收方读数据时也要提供一块缓存区,内核将数据从内核缓存区拷贝到接收方提供的缓存区中并唤醒接收线程,完成一次数据发送。

两次拷贝:用户空间->内核空间->用户空间

各种通信方式的特点

socket作为一款通用接口,其传输效率低,开销大,主要用在跨网络的进程间通信和本机上进程间的低速通信。

消息队列和管道采用存储-转发方式,即数据先从发送方缓存区拷贝到内核开辟的缓存区中,然后再从内核缓存区拷贝到接收方缓存区,至少有两次拷贝过程。

共享内存虽然无需拷贝,但控制复杂,难以使用。

Binder基于Client-Server通信模式,传输过程只需一次拷贝,为发送添加UID/PID身份,既支持实名Binder也支持匿名Binder,安全性高。

IPC

数据拷贝次数

共享内存

0

Binder

1

Socket/管道/消息队列

2

Binder机制大概学习

初识binder:

Binder的实体是位于Server中的对象,遍布于client中的入口可以看成指向这个binder对象的‘指针’,获取指针便可以操作binder,因此其引用却遍布于系统的各个进程之中,所以Binder对象可以看成是一个可以跨进程引用的对象,星罗棋布的引用仿佛粘接各个应用程序的胶水。

Binder通信模型

Binder框架定义了四个角色:Server,Client,ServiceManager(以后简称SMgr)以及Binder驱动。其中Server,Client,SMgr运行于用户空间,驱动运行于内核空间。这四个角色的关系和互联网类似:Server是服务器,Client是客户终端,SMgr是域名服务器(DNS),驱动是路由器。

Binder驱动:负责进程之间Binder通信的建立。

ServiceManager:在Server创建了Binder之后,为每个Binder在其内注册。

Server:server创建Binder实体,然后在serverManager中注册Binder。

Client:向ServiceManager请求对应的binder的引用。

Binder数据接收

由Binder驱动负责管理数据接收缓存,它的内存映射实在用户空间的地址,这样数据拷贝直接可以从一个用户到另外一个用户,并只需要一次通信。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃鸳鸯锅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值