Android_Binder机制

Binder是Android系统提供的一种IPC机制,除了Binder以外,还有管道和socket等等IPC机制。

可以将Android系统看作是一个基于Binder通信的C/S架构,除了C/S架构所包含的Client端和Server端外,Android还有一个全局的Service Manager端,它的作用是管理系统中的各种服务(Service)。

在Android系统的Binder机制中,由Client,Server,Service Manager,Binde驱动4个组成。

在Android系统中,Client,Server,Service Manager三者的关系:

1)Client,Service,Service Manger在用户空间实现,Binder驱动程序在内核空间实现。

2)Server进程要先注册一些Service到Service Manager中,所以Server是Service Manager的客户端,而Service Manager就是服务端了。Service Manager是一个守护进程,能够管理Server并向Client提供查询Server接口。
3)如果某个Client进程要使用某个Service,必须先到Service Manager中获取该Service的相关信息,所以Client是Service Manager的客户端。另外,Client根据得到的Service信息与Service所在的Server进程建立通信的通路,然后就可以直接与Service交互了,所以Client也是Server的客户端。

4)Binder驱动程序提供设备文件与用户空间交互,Client、Server和Service Manager通过open和ioctl文件操作函数与Binder驱动程序进行通信。
在Android平台中已经实现了Binder驱动程序和Service Manager,开发者只需要在用户空间实现自己的Client和Server即可。三者的交互都是基于Binder通信的。

5)Service Manager是整个Binder机制的守护进程,用来管理开发者创建的各种Server,并且向Client提供查询Server远程接口的功能。因为Service Manager组件是用来管理Server并且向Client提供查询Server远程接口的功能,所以Service Manager必然要和Server以及Client进行通信。我们知道,Service Manger、Client和Server三者分别是运行在独立的进程当中的,这样它们之间的通信也属于进程间的通信,而且也是采用Binder机制进行进程间通信。因此,Service Manager在充当Binder机制守护进程的角色的同时,也在充当Server的角色,但是它是一种特殊的Server。

Service Manager成为Android进程间通信(IPC)机制Binder守护进程的过程。
(1)打开/dev/binder文件:
(2)建立128KB内存映射:
(3)通知Binder驱动程序它是守护进程:
(4)进入循环等待请求的到来:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值