欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

binder 进程间的通信机制

程序员文章站 2022-09-16 20:16:29
Binder : android 进程间的通信机制 ; linux下 dev/binder 驱动 ; java的Binder.java 跨进程多进程的优势: 扩大内存 ; 危险隔离扩大内存:一个进程能申请的空间有限,可以通过多进程申请到更多内存。危险隔离:加载图片时,使用多进程能够防止主线程崩溃。binder的优势: binder 共享内存 ......

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

相关标签: IPC binder