CN121935046A - 一种基于Microdroid的多进程通信方法、装置及电子设备 - Google Patents
一种基于Microdroid的多进程通信方法、装置及电子设备Info
- Publication number
- CN121935046A CN121935046A CN202511874088.4A CN202511874088A CN121935046A CN 121935046 A CN121935046 A CN 121935046A CN 202511874088 A CN202511874088 A CN 202511874088A CN 121935046 A CN121935046 A CN 121935046A
- Authority
- CN
- China
- Prior art keywords
- service
- binder
- remote procedure
- procedure call
- entity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于Microdroid的多进程通信方法、装置及电子设备,方法包括:接收注册请求,注册请求包括服务端进程的服务名称以及binder对象注册请求;查找服务名称对应的虚拟套接字属性,根据虚拟套接字属性创建远程过程调用服务;将binder对象注册请求对应的binder实体注册在远程过程调用服务中;接收客户端进程的访问请求后,通过远程过程调用服务获取到binder实体,以使得客户端进程通过binder实体发送访问请求至服务端进程。本申请实现了能够采用Android原生的方式进行Binder通信,将基于安卓开发的系统服务移植到Microdroid中时,无需对需移植的系统服务进行过多的开发就可直接运行该系统服务,降低了开发和维护成本。
Description
技术领域
本发明涉及通信领域,尤其涉及一种基于Microdroid的多进程通信方法、装置及电子设备。
背景技术
在安卓系统中,多个进程通信使用的Binder RPC(基于Binder机制实现的远程过程调用)是基于Binder Linux内核驱动程序实现的,系统多进程服务依赖于ServiceManager(系统服务管理)进行管理。当应用进程访问系统服务进程时,需首先通过ServiceManager查找系统服务,以获取该系统服务的Binder对象(安卓系统中的进程间通信机制),从而可以通过该系统服务的Binder对象与系统服务进行通信。
近年来,为适应轻量级、高安全性的应用场景(如微虚拟机、可信执行环境),出现了安卓系统的精简版本,称为Microdroid(基于Binder机制实现的远程过程调用)。而Microdroid中不存在ServiceManager,且底层传输层并非传统的Binder内核驱动,而是基于vsock虚拟套接字实现。因此,Microdroid与安卓在进程间的通信存在较大差异,当原有基于安卓开发的一些系统服务是基于ServiceManager实现服务的查找及服务间的进程通信,这些系统服务需要移植到Microdriod时,则需要对查找服务及进程间的通信做出较大改动,给移植带来较大困难。
发明内容
本发明所要解决的技术问题是:提供一种基于Microdroid的多进程通信方法、装置及电子设备,实现客户端进程和服务端进程之间的通信。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种基于Microdroid的多进程通信方法,应用于电子设备,所述方法包括:
接收注册请求,所述注册请求包括服务端进程的服务名称以及binder对象注册请求;
查找所述服务名称对应的虚拟套接字属性,根据所述虚拟套接字属性创建远程过程调用服务;
将所述binder对象注册请求对应的binder实体注册在所述远程过程调用服务中;
接收客户端进程的访问请求后,通过所述远程过程调用服务获取到所述binder实体,以使得所述客户端进程通过所述binder实体发送所述访问请求至所述服务端进程。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种基于Microdroid的多进程通信装置,包括:
系统服务管理模块,接收注册请求,所述注册请求包括服务端进程的服务名称以及binder对象注册请求,查找所述服务名称对应的虚拟套接字属性,系统服务管理根据所述虚拟套接字属性创建远程过程调用服务,将所述binder对象注册请求对应的binder实体注册在所述远程过程调用服务中;
客户端进程模块,用于发起访问请求;
所述系统服务管理模块还用于在接收到所述访问请求后,通过所述远程过程调用服务获取到所述binder实体,并通过所述binder实体发送所述访问请求至所述服务端进程。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的一种基于Microdroid的多进程通信方法中的各个步骤。
本发明的有益效果在于:服务端通过获取虚拟套接字属性创建远程过程调用服务,并将binder对象注册到远程过程调用服务中,则客户端通过远程过程调用服务获取到服务端进程的binder实体,以使得客户端进程获取服务端进程所提供的服务将binder机制嵌套到远程过程调用服务中,则客户端能够通过远程过程调用服务获取到服务端注册的binder对象实现通信,而远程过程调用服务是安卓远程的方式,这就实现了能够采用类似于安卓原生的Binder通信机制进行客户端与服务端之间的通信,当将基于安卓开发的系统服务移植到Microdroid时,则无需对需移植的系统服务进行过多的开发就可直接运行该系统服务,降低了开发和维护成本。
附图说明
图1为本发明实施例提供的一种基于Microdroid的多进程通信方法的步骤流程图;
图2为本发明实施例提供的一种基于Microdroid的多进程通信系统框架的结构图;
图3为本发明实施例提供的一种基于Microdroid的多进程通信装置的结构图;
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中涉及的名词缩写及其释义如下:
AVF,Android Virtualization Framework,虚拟化框架,虚拟化框架为安卓设备提供一个安全的虚拟机化环境。
pVM,Protected VM,受保护的虚拟机,它在硬件和软件层面上提供了更高的安全性和隔离性。
Microdroid,安卓虚拟化框架中的轻量级安卓系统,是极简版的安卓操作系统,专为在受保护的虚拟机中运行而设计。
Glibc,GNU C Library,Linux系统中核心的C语言标准库,glibc是GNU发布的C语言运行库(libc),为Linux系统提供底层API支持,封装了操作系统服务并实现文件操作、字符串处理、内存管理等基础功能。
Bionic,安卓操作系统中的Bionic库,主要负责提供系统调用接口,运行时库函数以及一些基本的系统服务。
APEX,Android Package for Extensions,是Android 10引入的一种模块化更新机制,用于打包和分发系统组件(如二进制文件、共享库等),支持在不更新整个系统的情况下更新关键模块。
API,Application Programming Interface,应用程序接口API是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
AIDL,Android Interface Definition Language,接口定义语言,是Android平台上用于定义跨进程通信(IPC)接口的语言,它允许你在不同的应用程序组件或者服务之间传递数据,特别是在不同的应用程序之间,AIDL主要用于实现远程服务调用,使得一个应用能够安全地调用另一个应用提供的服务。
binder,安卓系统中的进程间通信机制,是Android操作系统中的一个核心组件,它允许不同的进程通过一个安全的通道进行通信。
Vsock,Virtual Socket,虚拟套接字,是Linux内核中用于虚拟化环境的通信机制,支持虚拟机(Guest)与宿主机(Host)或跨虚拟机的直接通信,无需传统网络协议栈。
RPC,Remote Procedure Calls,远程过程调用,是一种允许一个计算机程序调用另一个地址空间(即在另一台计算机上)的程序的方法。
ServiceManager,系统服务管理,是服务注册与查询的中心化管理器,负责协调客户端与服务端的连接。
AddService,注册服务接口,用于接收服务进程的注册请求并注册服务进程对应的Binder实体
GetService,获取服务接口,用于接收客户端进程的访问请求并传递所请求的服务名称。
RpcServer,远程过程调用服务,用于监听客户端进程的连接,以建立不同服务进程之间的通信。
RpcServerManager,远程过程管理服务,用于创建和管理远程过程调用服务RpcServer。
RpcSessionManager,远程会话管理服务,用于创建和管理远程会话管理服务RpcSession,并负责远程会话管理服务RpcSession与到远程过程调用服务RpcServer的连接。
RpcSession,远程会话服务,用于一个客户端到某个特定RpcServer的建立连接。
在现有相关技术中,相比于安卓应用沙盒所提供的隔离保护,安卓虚拟化框架(AVF)提供更加安全且私密的执行环境来执行代码,该框架非常适合以安全为导向的用例,这些用例需要比安卓应用沙盒提供的安全系数更高、甚至经过正式验证的隔离保证。Android虚拟化框架(AVF)等技术的出现,旨在通过创建受保护的虚拟机(pVM)来提供这种隔离的执行环境,其能够与主Android操作系统(主机)并行运行,并提供一个在机密性与完整性方面均优于标准Android环境的安全执行空间。Microdroid是在安卓虚拟化框架中的轻量级安卓系统,pVM为Microdroid提供了一个隔离的执行环境来运行应用的某一部分,因此Microdroid比常规安卓环境具有更高的机密性和完整性。
在传统操作系统中,要想提供强大的机密性和完整性保护,就必须进行大量的工作,而且通常是大量且重复性的工作。这是因为传统操作系统无法与整体安卓虚拟化框架保持良好兼容。例如,就标准安卓虚拟化框架而言,若开发者需要实现一种方法,以便在pVM中安全地加载和执行应用的某一部分,这首先需要基于针对通用Linux环境设计的glibc库来构建载荷,但整个Android应用生态及其框架层则深度依赖其自有的Bionic库,这导致大量现有Android应用代码无法直接在pVM内无缝移植与执行。
Microdroid提供了一个精心设计的现成操作系统映像,让开发者能以最省力的方式把应用的某个部分分流到pVM中。Microdroid的原生代码基于Bionic,通信则是通过Binder来实现。Microdroid为开发者提供了一个熟悉的安全环境,其中包含他们早已熟知的完整版安卓系统中的各种工具。
就目前而言,Android系统的进程间通信绝大多数由AIDL表示,其底层实现是基于Binder这一特定的Linux内核驱动程序。在pVM隔离架构下,主机与客户机拥有独立的内核空间,无法直接共享Binder驱动,这使得海量的现有AIDL接口无法在pVM中直接使用。现有技术的解决方案是放弃原生Binder,对Binder协议进行重写,以便能够通过套接字使用,通过这种方式,安卓现有的AIDL接口就能在pVM这个新环境中使用。但是这个过程不仅存在大量重复性的工作,而且使得pVM环境无法与主机侧海量的、基于Binder的现有服务进行原生交互。
其次,在标准安卓系统中,多个进程通信使用的Binder RPC是基于Binder Linux内核驱动程序实现的,系统多进程服务由ServiceManager进行管理。当客户端进程访问系统服务进程时,通过ServiceManager查找系统服务进程获取服务的Binder对象,从而可以通过Binder对象与系统服务进行通信。而Microdroid尽管通过重写Binder协议使其在vsock上工作实现了基础的Binder RPC通信,但是不存在ServiceManager,也就是说,任何一个原本通过向ServiceManager注册、并被其他进程通过查询ServiceManager来发现的系统服务,都无法在Microdroid中以原有的方式工作。因此,Microdroid与安卓在进程间的通信存在较大差异,当原有基于安卓开发的一些系统服务是基于ServiceManager实现服务的查找及服务间的进程通信,在移植到Microdroid时无法直接运行,必须进行大量、深度的修改,给移植带来较大困难,将增加开发和维护成本。
本申请为了解决上述的问题,提供了一种基于Microdroid的多进程通信方法、装置及电子设备。下面具体介绍下本申请一种基于Microdroid的多进程通信方法。
本申请中的基于Microdroid的多进程通信方法可以用于将基于安卓开发的系统服务移植到Microdroid中,使得移植到Microdroid中的系统服务能够采用安卓原生的方式进行通信,从而无需对系统服务进行过多的开发。其中本申请的电子设备,可以是能进行进程间通信的电子设备,例如手机、平板、POS终端等能够进行多进程间通信的设备。
以下具体介绍本发明中的基于Microdroid的多进程通信方法,应用于系统服务管理,参照附图1,包括了步骤110-步骤140。
步骤110、接收注册请求,注册请求包括服务端进程的服务名称以及binder对象注册请求。其中,注册请求为服务端进程所发送的注册服务请求,binder对象注册请求用于对服务进程对应的binder对象进行注册。注册请求通过系统服务管理进行接收,如图2所示,系统服务管理为ServiceManager,用于管理服务进程的注册与查询,使得第一服务进程能通过系统服务管理注册第一服务进程binder对象,第二服务进程能通过系统服务管理查询第一服务进程binder对象,从而建立第一服务进程与第二服务进程之间的通信链路。例如,A服务进程通过向系统服务管理发送注册请求,系统服务管理接收A服务进程的注册请求。
步骤120、查找服务名称对应的虚拟套接字属性,根据虚拟套接字属性创建远程过程调用服务。其中,虚拟套接字属性包括vsock端口或vsock名称。虚拟套接字属性作为多进程之间通信的连接工具,例如vsock套接字,使得通信双方能够通过标准的套接字名称或端口,直接进行高效的数据交换。服务名称与虚拟套接字属性一一对应,并预置于系统中存储,通过系统服务管理查找服务名称对应的虚拟套接字属性并创建远程过程调用服务。远程过程调用服务为RpcServer,用于监听客户端进程的连接,以建立不同服务进程之间的通信。例如,若A服务进程的服务名称为“A服务”,将“A服务”和与之对应的vsock端口:1234预置于系统中,系统服务管理在接收A服务进程的注册请求后,系统服务管理根据服务名称:“A服务”,查找出vsock端口:1234,系统服务管理创建远程过程调用服务,将vsock端口:1234绑定于远程过程调用服务以监听客户端连接。
步骤130、将binder对象注册请求对应的binder实体注册在远程过程调用服务中。其中,通过系统服务管理将binder对象注册请求对应的binder实体注册在远程过程调用服务中。例如,系统服务管理将A服务进程的binder对象注册请求对应的A服务进程的binder实体注册在远程过程调用服务中。
步骤140、接收客户端进程的访问请求后,通过远程过程调用服务获取到binder实体,以使得客户端进程通过binder实体发送访问请求至服务端进程。其中,通过系统服务管理接受客户端进程的访问请求,通过获取服务接口从远程过程调用服务获取到binder实体。例如,客户端B服务进程发送访问服务端A服务进程的访问请求,需通过获取远程过程调用服务中的A服务进程的binder实体,通过binder实体发送访问请求至A服务进程。
以此方式,系统服务管理接收注册请求,服务端进程通过系统服务管理查找服务名称对应的虚拟套接字属性,根据虚拟套接字属性创建远程过程调用服务,并将binder实体注册在远程过程调用服务中,以监听客户端进程的链接,客户端进程通过系统服务管理查找所请求访问的服务端进程的服务名称对应的虚拟套接字属性,根据虚拟套接字属性从远程过程调用服务中获取服务端进程的binder实体,以此实现客户端进程和服务端进程之间的通信,并能够采用Android原生的方式进行Binder通信,当基于安卓开发的系统服务需要移植到Microdroid中时,那么无需对需移植的系统服务进行过多的开发就可直接运行该系统服务,降低了开发和维护成本。
在本申请的一个实施例中,步骤120包括步骤121至步骤122。
步骤121、根据服务名称,在系统服务配置文件中查找与服务名称对应的虚拟套接字属性,其中,系统服务配置文件用于存储服务名称与虚拟套接字属性的映射关系。例如,A服务进程名称为“A服务”,若与A服务进程对应的虚拟套接字属性为vsock端口1234,在系统服务配置文件中A服务进程名称与对应的虚拟套接字属性进行映射存储,如存储形式可以为“A服务-1234”,也可以为“A服务:1234”,那么通过A服务进程名称就可以查找到与之相对应的vsock端口1234。
步骤122、调用远程过程管理服务,根据虚拟套接字属性,创建远程过程调用服务。其中,远程过程管理服务为RpcServerManager,用于创建和管理远程过程调用服务RpcServer。例如,A服务进程通过调用远程过程管理服务,创建A服务进程的远程过程调用服务RpcServer,假如A服务进程对应的虚拟套接字属性为vsock端口1234,那么A服务进程的远程过程调用服务RpcServer将vsock端口1234向外暴露以等待客户端连接。
以此方式,预置的服务配置文件,系统服务管理根据服务名称查找与服务端进程对应的虚拟套接字属性,系统服务管理调用远程过程管理服务,根据虚拟套接字属性,创建远程过程调用服务,实现了使用基于虚拟套接字作为数据传输通道以实现Binder RPC数据传输,以模拟Binder通信实现客户端进程与服务端进程连接通信。
在本申请的一个实施例中,步骤121包括:
将系统配置文件预置于系统配置存储路径中,根据系统配置存储路径获取系统配置文件。例如,系统配置文件的文件名称为config,那么预置于系统配置存储路径中的路径可以为system/etc/config,那么就可以根据路径system/etc/config找到该系统配置文件。
以此方式,通过将系统配置文件将系统配置文件预置于系统配置存储路径中,以便于获取系统配置文件的存储位置,从而便于访问系统文件中的内容,使得更加快速从系统配置文件中查询虚拟套接字属性等配置信息。
在本申请的一个实施例中,步骤130包括:
根据binder对象注册请求,调用系统服务管理中的注册服务接口将Binder实体注册为远程过程调用服务的根实体,并监听客户端连接。其中,注册服务接口为AddService,用于接收服务进程的注册请求并注册服务进程对应的Binder实体。Binder实体用于接收另一服务进程的访问请求并根据访问请求执行相应的业务逻辑。根实体为root实体,用于获取服务进程的Binder实体。例如,将A服务进程注册为远程过程调用服务的root实体,远程过程调用服务监听客户端连接A服务进程的请求。
以此方式,通过将服务进程的Binder实体注册为远程过程调用服务的根实体,从而为客户端进程建立一个可信的通信入口,以根据根实体获取Binder实体,从而开启客户端进程与服务端进程之间安全的数据交互通道。
在本申请的一个实施例中,步骤140包括步骤141至步骤143:
步骤141、根据客户端进程的访问请求,调用系统服务管理中的获取服务接口,获取访问请求所请求的服务名称。其中,获取服务接口为GetService,用于接收客户端进程的访问请求并传递所请求的服务名称。客户端进程通过调用获取服务接口并传入目标服务名称,以向服务端发起访问请求。例如,B服务进程(客户端进程)需要访问A服务进程请求(服务端进程),那么B服务进程向获取服务接口GetService提供A服务进程的服务名称,便可以向服务端发起A服务进程的访问请求。
步骤142、查找服务名称对应的虚拟套接字属性,并根据虚拟套接字属性与远程过程调用服务建立连接,获取binder实体。其中,系统服务管理根据获取服务接口所传达的服务名称,在预置的系统配置文件中查找对应的虚拟套接字属性。例如,需要查找的服务名称为“A服务”,系统服务管理根据“A服务”在系统配置文件中查找到对应的vsock端口为“1234”,那么通过查找暴露出的vsock端口为1234的远程过程调用服务,从而从该远程过程调用服务中获取A服务进程对应的binder实体。
步骤143、通过binder实体发送访问请求至服务端进程。例如,通过获取A服务进程对应的binder实体可以访问A服务进程。
以此方式,通过系统服务管理根据客户端进程的访问请求,调用获取服务接口,获取访问请求所请求的服务名称,查找服务名称对应的虚拟套接字属性,并根据虚拟套接字属性与远程过程调用服务建立连接,获取binder实体,通过binder实体发送访问请求至服务端进程,实现了能够采用类似于Android原生的Binder通信机制进行客户端与服务端之间的通信。
在本申请的一个实施例中,步骤142包括步骤1421至步骤1422:
步骤1421、根据服务名称在系统服务配置文件中查找与服务名称对应的虚拟套接字属性,调用远程会话管理服务,根据虚拟套接字属性创建远程会话服务。其中,远程会话管理服务为RpcSessionManager,用于创建和管理远程会话服务RpcSession,并负责远程会话服务RpcSession与到远程过程调用服务RpcServer的连接。远程会话服务用于一个客户端到某个特定RpcServer的建立连接。例如,根据服务名称“A服务”,客户端在配置文件中查找到与之对应的vsock端口为1234,远程会话管理服务RpcSession会根据vsock端口1234发送访问请求。
步骤1422、调用远程会话服务根据虚拟套接字属性与远程过程调用服务建立通信,获取存储于远程过程调用服务中的binder实体。例如,客户端B服务进程需要访问服务端A服务进程,访问请求通过远程会话服务RpcSession这条虚拟线路,被传输到服务端的远程过程调用服务RpcServer,远程过程调用服务RpcServer再处理访问请求,执行结果再沿原路返回给客户端B服务进程。
以此方式,通过客户端进程通过在系统服务配置文件中查与服务端进程对应的找虚拟套接字属性,系统服务管理通过调用远程会话管理服务创建远程会话服务,并与远程过程调用服务建立通信,获取存储于远程过程调用服务中的binder实体,实现了客户端的远程过程调用服务与服务端远程会话服务进行连接通信,并在实际应用中,系统管理员只需通过修改预置的系统服务配置文件,就可以调整各个服务进程的端口分配,无需修改任何客户端代码就可以实现客户端进程与服务端进程连接通信,从而降低了开发和维护成本。
在本申请的一个实施例中,步骤1422包括:
通过绑定于远程过程调用服务的vsock端口或vsock名称,调用远程会话服务与远程过程调用服务建立数据传输通道。例如,远程会话管理服务RpcSession会根据vsock端口1234发送访问请求,连接vsock端口号为1234的远程过程调用服务RpcServer。
以此方式,通过远程过程调用服务绑定到特定的vsock端口或名称,调用远程会话服务与远程过程调用服务建立数据传输通道。这意味着客户端明确知道它想要连接的目标服务在虚拟网络中的精确位置,确保了连接请求能被正确路由到目标RpcServer。
在本申请的一个实施例中,步骤1422还包括:
调用远程会话服务获取远程过程调用服务中的根实体,通过根实体获取binder实体。其中,根实体是当客户端成功建立到一个远程过程调用服务的连接后,服务端主动提供给客户端的第一个对象,该对象用于获取binder实体。
以此方式,通过调用远程会话服务获取根实体,再通过根实体获取Binder实体,客户端进程只需获取根实体,根实体会根据访问请求进行业务逻辑处理,从而简化了客户端服务开发步骤,即无需对系统服务进行过多的开发就可直接运行该系统服务。
将本申请上述一种基于Microdroid的多进程通信方法应用于实际场景中,包括服务端进程注册和客户端进程访问服务进程两个部分。
服务进程注册包括以下步骤(1)至(3)。
(1)服务进程初始化时,创建服务的Binder对象,用于接收处理其他进程的调用请求,相当于上述步骤110。
(2)ServiceManager适配库的RpcServerManager根据服务名称从系统服务配置中读取该服务的vsock端口或vsock名称等配置信息,创建RpcServer,相当于上述步骤120。
(3)服务进程调用ServiceManager适配库的AddService方法,传递服务名称和Binder对象注册服务,将该服务的Binder对象注册为RpcServer的root对象,然后进入监听新连接的状态,相当于上述步骤130。
客户端进程访问服务进程包括以下步骤(1)至(4),相当于上述步骤140:
(1)A服务进程调用ServiceManager适配库的GetService方法传递B服务进程名称,获取B服务进程的Binder对象。
(2)ServiceManager适配库的RpcSessionManager根据服务名称从系统配置读取B服务进程的vsock端口或vsock名称等配置信息,创建RpcSession。
(3)当RpcSession与B服务进程的RpcServer建立连接后,获取B服务进程的Binder对象。
(4)当Binder对象获取成功后,ServiceManager适配库将其返回给A服务进程,A服务进程获取到B服务进程的Binder对象后,便可以实现类似于像在Android进行Binder通信一样的通信机制。
综上所述,服务端通过系统服管理获取虚拟套接字属性创建远程过程调用服务,并将binder对象注册到远程过程调用服务中,则客户端通过系统服管理连接远程过程调用服务获取到服务端进程的binder实体,以使得客户端进程获取服务端进程所提供的服务将binder机制嵌套到远程过程调用服务中,则客户端能够通过远程过程调用服务获取到服务端注册的binder对象实现通信,而远程过程调用服务是安卓远程的方式,实现了能够采用类似于Android原生的Binder通信机制进行客户端与服务端之间的通信,当将基于安卓开发的系统服务移植到Microdroid时,则无需对需移植的系统服务进行过多的开发就可直接运行该系统服务,降低了开发和维护成本。
请参照图3,本发明还提供了一种基于Microdroid的多进程通信装置,装置包括:
系统服务管理模块100,接收注册请求,注册请求包括服务端进程的服务名称以及binder对象注册请求,查找服务名称对应的虚拟套接字属性,系统服务管理根据虚拟套接字属性创建远程过程调用服务,将binder对象注册请求对应的binder实体注册在远程过程调用服务中;
客户端进程模块200,用于发起访问请求;
系统服务管理模块还用于在接收到访问请求后,通过远程过程调用服务获取到binder实体,并通过binder实体发送访问请求至服务端进程。
请参照图4,本发明还提供了一种电子设备300,包括存储器301以及处理器302以及存储在存储器301上并在处理器302上运行的计算机程序,处理器302执行计算机程序时实现如上述的一种基于Microdroid的多进程通信方法中的各个步骤。
本申请中的装置和电子设备的有益效果同上述方法,在此不再赘述。
以上仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于Microdroid的多进程通信方法,其特征在于,所述方法包括:
接收注册请求,所述注册请求包括服务端进程的服务名称以及binder对象注册请求;
查找所述服务名称对应的虚拟套接字属性,根据所述虚拟套接字属性创建远程过程调用服务;
将所述binder对象注册请求对应的binder实体注册在所述远程过程调用服务中;
接收客户端进程的访问请求后,通过所述远程过程调用服务获取到所述binder实体,以使得所述客户端进程通过所述binder实体发送所述访问请求至所述服务端进程。
2.根据权利要求1所述的一种基于Microdroid的多进程通信方法,其特征在于,所述查找所述服务名称对应的虚拟套接字属性,根据所述虚拟套接字属性创建远程过程调用服务包括:
根据所述服务名称,在系统服务配置文件中查找与所述服务名称对应的虚拟套接字属性,其中,所述系统服务配置文件用于存储所述服务名称与所述虚拟套接字属性的映射关系;
调用远程过程管理服务,根据所述虚拟套接字属性,创建远程过程调用服务。
3.根据权利要求2所述的一种基于Microdroid的多进程通信方法,其特征在于,根据所述服务名称,在系统服务配置文件中查找与所述服务名称对应的虚拟套接字属性包括:
将系统配置文件预置于系统配置存储路径中,根据系统配置存储路径获取所述系统配置文件。
4.根据权利要求1所述的一种基于Microdroid的多进程通信方法,其特征在于,将所述binder对象注册请求对应的binder实体注册在所述远程过程调用服务中包括:
根据所述binder对象注册请求,调用系统服务管理中的注册服务接口将所述Binder实体注册为所述远程过程调用服务的根实体,并监听客户端连接。
5.根据权利要求1所述的一种基于Microdroid的多进程通信方法,其特征在于,接收客户端进程的访问请求后,通过所述远程过程调用服务获取到所述binder实体,并通过所述binder实体发送所述访问请求至所述服务端进程包括:
根据客户端进程的访问请求,调用所述系统服务管理中的获取服务接口,获取访问请求所请求的服务名称;
查找所述服务名称对应的虚拟套接字属性,并根据所述虚拟套接字属性与所述远程过程调用服务建立连接,获取所述binder实体;
通过所述binder实体发送所述访问请求至所述服务端进程。
6.根据权利要求5所述的一种基于Microdroid的多进程通信方法,其特征在于,查找所述服务名称对应的虚拟套接字属性,并根据所述虚拟套接字属性与所述远程过程调用服务建立通信,获取到所述binder实体包括:
根据所述服务名称在系统服务配置文件中查找与所述服务名称对应的虚拟套接字属性,调用所述远程会话管理服务,根据所述虚拟套接字属性创建远程会话服务;
调用所述远程会话服务根据所述虚拟套接字属性与所述远程过程调用服务建立通信,获取存储于所述远程过程调用服务中的所述binder实体。
7.根据权利要求6所述的一种基于Microdroid的多进程通信方法,其特征在于,所述虚拟套接字属性包括vsock端口或vsock名称;
所述调用所述远程会话服务根据所述虚拟套接字属性与所述远程过程调用服务建立通信包括:
通过绑定于所述远程过程调用服务的vsock端口或vsock名称,调用所述远程会话服务与所述远程过程调用服务建立数据传输通道。
8.根据权利要求6所述的一种基于Microdroid的多进程通信方法,其特征在于,获取存储于所述远程过程调用服务中的所述binder实体包括:
调用所述远程会话服务获取所述远程过程调用服务中的根实体,通过根实体获取所述binder实体。
9.一种基于Microdroid的多进程通信装置,其特征在于,包括:
系统服务管理模块,接收注册请求,所述注册请求包括服务端进程的服务名称以及binder对象注册请求,查找所述服务名称对应的虚拟套接字属性,系统服务管理根据所述虚拟套接字属性创建远程过程调用服务,将所述binder对象注册请求对应的binder实体注册在所述远程过程调用服务中;
客户端进程模块,用于发起访问请求;
所述系统服务管理模块还用于在接收到所述访问请求后,通过所述远程过程调用服务获取到所述binder实体,并通过所述binder实体发送所述访问请求至所述服务端进程。
10.一种电子设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8任一所述的一种基于Microdroid的多进程通信方法中的各个步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202511874088.4A CN121935046A (zh) | 2025-12-12 | 2025-12-12 | 一种基于Microdroid的多进程通信方法、装置及电子设备 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202511874088.4A CN121935046A (zh) | 2025-12-12 | 2025-12-12 | 一种基于Microdroid的多进程通信方法、装置及电子设备 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN121935046A true CN121935046A (zh) | 2026-04-28 |
Family
ID=99530593
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202511874088.4A Pending CN121935046A (zh) | 2025-12-12 | 2025-12-12 | 一种基于Microdroid的多进程通信方法、装置及电子设备 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN121935046A (zh) |
-
2025
- 2025-12-12 CN CN202511874088.4A patent/CN121935046A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11934341B2 (en) | Virtual RDMA switching for containerized | |
| US11171913B2 (en) | Systems and methods for implementing address translation services | |
| CN115269184B (zh) | 函数即服务(faas)执行分配器 | |
| US5497463A (en) | Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system | |
| US6775700B2 (en) | System and method for common information model object manager proxy interface and management | |
| JP4297790B2 (ja) | 物理的ストレージを抽象するプラグ可能なアーキテクチャを有するパーシステントなキーと値とのリポジトリ | |
| US6820267B2 (en) | Method and system for remote automation of object oriented applications | |
| US5396630A (en) | Method and system for object management across process boundries in a data processing system | |
| JPH09223116A (ja) | 複数ミドルウェアに渡る分散オブジェクトの位置透過性 | |
| US10462228B2 (en) | Providing access to a smartcard within a remote session | |
| US20030055862A1 (en) | Methods, systems, and articles of manufacture for managing systems using operation objects | |
| CN114201317A (zh) | 数据传输方法、装置、存储介质及电子设备 | |
| US10235189B2 (en) | Isolating a redirected smart card reader to a remote session | |
| US10798201B2 (en) | Redirecting USB devices via a browser-based virtual desktop infrastructure application | |
| CN112073448A (zh) | 一种双系统终端的服务隔离方法和装置 | |
| CN114996750B (zh) | 数据共享方法以及装置 | |
| US9588947B1 (en) | Integrated administrative interface for open network programming applications | |
| CN113419810A (zh) | 数据交互方法、装置、电子设备及计算机存储介质 | |
| GB2346983A (en) | Minimising inter-machine data transfers in a distributed transaction processing system | |
| US8938554B2 (en) | Mechanism for enabling a network address to be shared by multiple labeled containers | |
| CN121935046A (zh) | 一种基于Microdroid的多进程通信方法、装置及电子设备 | |
| US20050132084A1 (en) | Method and apparatus for providing server local SMBIOS table through out-of-band communication | |
| US11768830B1 (en) | Multi-wire protocol and multi-dialect database engine for database compatability | |
| US10862757B2 (en) | Isolating a redirected biometric device to a remote session | |
| CN121957934A (zh) | 一种基于安卓虚拟化框架的进程通信方法及电子设备 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication |