【Android】Binder的理解

1.Binder是什么?

对于android而言,是跨进程传输的通道,是封装好的java类,可以直接继承和使用。

从组成、模型来讲,我认为是连接Server层、Client层、ServerManager层的纽带,也是驱动。

2.Binder的基础概念

2.1 进程空间

进程空间:用户空间(不可共享)和内核空间(可共享)。

linux本身用copy_from_user()与copy_to_user(),用俩次拷贝进行跨进程通讯。

copy_from_user():将A进程的用户空间的数据拷贝到内核空间。

copy_to_user():将内核空间的数据拷贝到B进程的用户空间

以上需要拷贝2次,而Binder只需要拷贝1次。

2.2 Binder跨进程

2.2.1 流程

service端在binder注册服务到serverManager,client端通过binder获取serverManager里的服务。

2.2.2 作用

Binder.c :连接进程,调用mmap()方法,创建内核缓存区和接受数据缓存区。

ServiceManager.c:通过binder_loop()创建循环请求队列,获取数据和解析binder,关机才会退出循环。

3.Android端与Binder

1.ContentProvider,内部有个ContentProviderNavite与Binder通信(还未写完

2.Aidl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值