当前位置: 移动技术网 > IT编程>开发语言>Java > binder 进程间的通信机制

binder 进程间的通信机制

2020年07月27日  | 移动技术网IT编程  | 我要评论

Binder : android 进程间的通信机制        ;       linux下 dev/binder 驱动      ; java的Binder.java 跨进程

 

多进程的优势:  扩大内存 ; 危险隔离

扩大内存:一个进程能申请的空间有限,可以通过多进程申请到更多内存。

危险隔离:加载图片时,使用多进程能够防止主线程崩溃。

 

binder的优势:        binder                       共享内存                                         socket(管道,通道信号)

性能:     只拷贝一次                               无需拷贝                                            拷贝两次

特点:        c/s架构                                      控制复杂                                            c/s架构   通用,效率低,开销大

安全:app分配uid,同时支持实名和匿名(binder)  ;     依赖上层协议,接入点开放,不安全(共享内存/socket)

 

binder如何做到一次拷贝:  了解内存划分 ; mmap(内存映射)

内存划分:用户空间和内核空间(虚拟内存)

 

传统IPC: 客户端拷贝数据到内核空间内核空间指向一个物理内存,服务端又指向一个不同的物理内存,因此需要拷贝两次。

binder:  客户端拷贝到内核空间,内核空间通过mmap到一个物理内存,并且服务端指向同一内存。

 

AIDL:接口定义语言(通过接口语言生成java代码)

asInterface  :判断是否在同一进程

transact: 会挂起线程

reply:打包数据返回

服务端的接受允许在binder线程里面

 

四大组件通信:

广播是怎么跨进程的:

client(客户端)—— serviceManager ——AMS(activity manager service) ——service(服务端)——AMS 返回IBinder对象

Intent能传递多大的数据:1M - 8k

 

 

 

 

本文地址:https://blog.csdn.net/weixin_40790006/article/details/107599664

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网