Binder框架认知

Service学习笔记-as下配置aidl一文中提到利用aidl技术进行Client和Server的跨进程通信。aidl底层实现就是Binder,Binder作为android推荐的ipc(Inter-Process Communication,进程间通信)方式,自有其独特优势。

ipc主要性能指标不外乎效率与安全性,一般的进程间传递数据一般要通过“用户内存>内核内存>用户内存”这样的两次拷贝,共享内存的话安全性不高,Binder通过mmap()映射的方式,拷贝到内核内存也相当于拷贝到了接收方内存,这样就只需一次拷贝。

fd = open("/dev/binder", O_RDWR);
mmap(NULL, MAP_SIZE, PROT_READ, MAP_PRIVATE, fd, 0);

Binder主要涉及到四大模块-Client、Server、Servicemanager、Binder。其中前三运行在用户态,Binder运行在内核态。

Servicemanager的作用类似于DNS(域名解析系统)的功能,Server端注册自己到Servicemanager后,Client请求某个Server时就先去看下Servicemanager注册表中是否有这个服务代理,如果有则返回给Client。Binder的作用类似于路由器,主要用于传输数据。

学习参考:

Android深入浅出之Binder机制

Android Binder设计与实现 – 设计篇

Android进程间通信(IPC)机制Binder简要介绍和学习计划

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值