跨进程通信方法与Binder驱动技术

技术编号:30638554 阅读:18 留言:0更新日期:2021-11-04 00:28
本申请提供了一种跨进程通信方法与Binder驱动、电子设备及存储介质,方法包括:Binder驱动在接收到客户端进程发送的服务获取请求时,将服务获取请求发送给目标服务管理器,以使目标服务管理器基于服务获取请求确定Binder引用,并将Binder引用发送给Binder驱动;Binder驱动将Binder引用发送给客户端进程,以使客户端进程通过Binder引用获取服务端进程提供的服务;其中,目标服务管理器按照如下方法确定:在客户端进程打开Binder驱动后,Binder驱动基于客户端进程所在的命名空间,通过查询预设的命名空间以及服务管理器的对应关系确定目标服务管理器,其中,对应关系中命名空间的数量为至少两个,能实现多容器环境下的跨进程通信。的跨进程通信。的跨进程通信。

【技术实现步骤摘要】
跨进程通信方法与Binder驱动


[0001]本专利技术涉及计算机
,特别涉及一种跨进程通信方法与Binder驱动、电子设备及存储介质。

技术介绍

[0002]随着Android(安卓)设备越来越多的被应用于各行各业,人们对于Android系统的需求也越来越高,其中包括多容器运行Android系统,即在一个Android系统中,再运行多个Android容器。
[0003]Android系统基于Linux操作系统,但其进程间通信(IPC)技术没有采用Linux原本的方式,而是采用Binder机制,在Linux内核中创建了一个虚拟字符设备驱动/dev/binder,并对外提供init、open、mmap、ioctl等接口,用户态进程通过这些接口访问内核态,并通过内核的Binder驱动对其他用户态进程进行访问,从而实现跨进程通信。
[0004]但是Binder驱动不支持多容器环境下的跨进程通信。具体来说,对于Android系统内核中的实现,仅有一份binder_context_mgr_node(binder_context_mgr_node用来保存服务管理器ServiceManager对应的binder实体)。当有多个Android容器运行时,每个容器初始化服务管理器时服务管理器都会向binder驱动中注册为binder_context_mgr_node,会导致执行失败从而系统发生运行错误。
[0005]因此,如何提供一种方案,以实现多容器环境下的跨进程通信,成为亟待解决的技术问题。

技术实现思路

[0006]针对现有技术存在的技术问题,本申请实施例提供一种跨进程通信方法与Binder驱动、电子设备及存储介质。
[0007]第一方面,本申请实施例提供了一种跨进程通信方法,包括:Binder驱动在接收到客户端进程发送的服务获取请求时,将所述服务获取请求发送给目标服务管理器,以使所述目标服务管理器基于所述服务获取请求确定Binder引用,并将所述Binder引用发送给所述Binder驱动;所述Binder驱动将所述Binder引用发送给所述客户端进程,以使所述客户端进程通过所述Binder引用获取服务端进程提供的服务;其中,所述目标服务管理器按照如下方法确定:在所述客户端进程打开所述Binder驱动后,所述Binder驱动基于所述客户端进程所在的命名空间,通过查询预设的命名空间以及服务管理器的对应关系确定所述目标服务管理器,其中,所述对应关系中命名空间的数量为至少两个。
[0008]第二方面,本申请实施例还提供了一种Binder驱动,包括:第一发送单元,用于在接收到客户端进程发送的服务获取请求时,将所述服务获取请求发送给目标服务管理器,以使所述目标服务管理器基于所述服务获取请求确定
Binder引用,并反馈所述Binder引用;第二发送单元,用于将所述Binder引用发送给所述客户端进程,以使所述客户端进程通过所述Binder引用获取服务端进程提供的服务;其中,所述目标服务管理器通过查询单元确定;所述查询单元,用于:在所述客户端进程打开所述Binder驱动后,基于所述客户端进程所在的命名空间,通过查询预设的命名空间以及服务管理器的对应关系确定所述目标服务管理器,其中,所述对应关系中命名空间的数量为至少两个。
[0009]第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面所述的跨进程通信方法的步骤。
[0010]第四方面,本申请实施例还提供了一种电子设备,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如第一方面所述的跨进程通信方法的步骤。
[0011]综上,本申请实施例提供的跨进程通信方法与Binder驱动、电子设备及存储介质,首先,Binder驱动在接收到客户端进程发送的服务获取请求时,会将所述服务获取请求发送给目标服务管理器,以使所述目标服务管理器基于所述服务获取请求确定Binder引用,并将所述Binder引用发送给所述Binder驱动;之后,所述Binder驱动会将所述Binder引用发送给所述客户端进程,以使所述客户端进程通过所述Binder引用获取服务端进程提供的服务,整个方案中一方面,基于预设的命名空间以及服务管理器的对应关系使得Binder驱动能够支持以命名空间这一维度来区分服务管理器,使多个容器各自的服务管理器在Binder驱动中相互隔离:目标服务管理器为所述客户端进程所在的命名空间对应的服务管理器,即多容器环境下所述客户端进程所属容器对应的服务管理器,则在多容器环境下的跨进程通信的过程中,可以从多个容器对应的服务管理器中确定出正确的服务管理器,基于该服务管理器实现多容器环境下的跨进程通信;另一方面,目标服务管理器为Binder驱动预先确定出来的,因此,当所述客户端进程每次访问所述服务端进程提供的服务时,可以直接找到目标服务管理器,因而能够提高多容器环境下跨进程通信的效率。
附图说明
[0012]图1为本申请实施例提供的一种跨进程通信方法的流程示意图;图2为本申请实施例提供的一种Binder驱动的结构示意图;图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
[0013]为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操
作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
[0014]另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0015]需要说明的是,本申请实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
[0016]参照图1所示,为本申请实施例提供的一种跨进程通信方法的流程示意图,具体包括:S10、Binder驱动在接收到客户端进程发送的服务获取请求时,将所述服务获取请求发送给目标服务管理器,以使所述目标服务管理器基于所述服务获取请求确定Binder引用,并将所述Binder引用发送本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种跨进程通信方法,其特征在于,包括:Binder驱动在接收到客户端进程发送的服务获取请求时,将所述服务获取请求发送给目标服务管理器,以使所述目标服务管理器基于所述服务获取请求确定Binder引用,并将所述Binder引用发送给所述Binder驱动;所述Binder驱动将所述Binder引用发送给所述客户端进程,以使所述客户端进程通过所述Binder引用获取服务端进程提供的服务;其中,所述目标服务管理器按照如下方法确定:在所述客户端进程打开所述Binder驱动后,所述Binder驱动基于所述客户端进程所在的命名空间,通过查询预设的命名空间以及服务管理器的对应关系确定所述目标服务管理器,其中,所述对应关系中命名空间的数量为至少两个。2.如权利要求1所述的方法,其特征在于,还包括:若所述Binder驱动基于所述客户端进程所在的命名空间,通过查询预设的命名空间以及服务管理器的对应关系未确定出所述目标服务管理器,则确定所述客户端进程所在的命名空间对应的服务管理器,并生成所述客户端进程所在的命名空间和所述客户端进程所在的命名空间对应的服务管理器的对应关系。3.如权利要求2所述的方法,其特征在于,记所述客户端进程所在的命名空间对应的服务管理器为第一服务管理器;其中,确定所述第一服务管理器,包括:所述Binder驱动创建所述第一服务管理器的Binder实体;其中,所述客户端进程所在的命名空间和所述客户端进程所在的命名空间对应的服务管理器的对应关系包括:所述客户端进程所在的命名空间的标识和所述第一服务管理器的Binder实体。4.如权利要求1至3任一项所述的方法,其特征在于,所述Binder驱动基于所述客户端进程所在的命名空间,通过查询预设的命名空间以及服务管理器的对应关系确定所述目标服务管理器,包括:所述Binder驱动基于所述Binder驱动以及所述客户端进程所在的命名空间,通过查询预设的Binder驱动、命名空间以及服务管理器的对应关系确定所述目标服务管理器,其中,所述对应关系中Binder驱动的数量为至少两个。5.一种Binder驱动,其特征在于,包括:第一发送单元,用于在接收到客户端进程发送的服务获取请求时,将所述服务获取请求发送给目标服务管理器,以使...

【专利技术属性】
技术研发人员:王思远
申请(专利权)人:北京海誉动想科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1