CN112068968A - 一种双系统终端的服务访问方法和装置 - Google Patents
一种双系统终端的服务访问方法和装置 Download PDFInfo
- Publication number
- CN112068968A CN112068968A CN201910500201.0A CN201910500201A CN112068968A CN 112068968 A CN112068968 A CN 112068968A CN 201910500201 A CN201910500201 A CN 201910500201A CN 112068968 A CN112068968 A CN 112068968A
- Authority
- CN
- China
- Prior art keywords
- service
- domain
- service manager
- handle value
- android
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施方式提出一种双系统终端的服务访问方法和装置。所述双系统包含两个安卓域和host域;该方法包括:在host域中部署host域服务管理器(ServiceManager),在所述host域服务管理器注册全域访问的服务进程,其中所述host域服务管理器在Binder驱动模块中注册有预定的句柄值;当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端。可以解决硬件冲突问题。
Description
技术领域
本发明属于双系统技术领域,特别是涉及一种双系统终端的服务访问方法和装置。
背景技术
双系统终端中,运行两个安卓(Android)系统,两个安卓系统都会部署一些相同基础服务,这些服务管理各自的应用逻辑,仅供本安卓系统的进程调用。
双系统终端包括三个域,分别为两个安卓域和host域。host域是原始Linux空间。host域启动过程中,通过Linux容器(Linux Container,LXC)工具新建两个容器(container),两个容器分别启动一个安卓系统,每个安卓系统称为安卓域。LXC是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性,相当于C++中的NameSpace。容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。
某些本地(native)进程,对于硬件资源很可能是独占的,若两个服务(service)同时运行,则不可避免的存在冲突。
发明内容
本发明实施例提出一种双系统终端的服务访问方法和装置。
本发明实施例的技术方案如下:
一种双系统终端的服务访问方法,所述双系统包含两个安卓域和host域;该方法包括:
在host域中部署host域服务管理器,在所述host域服务管理器注册全域访问的服务进程,其中所述host域服务管理器在Binder驱动模块中注册有预定的句柄值;
当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端。
在一个实施方式中,所述全域访问的服务进程为独占硬件资源的本地(native)进程。
在一个实施方式中,所述本地进程包括全球定位系统守护(GPSD)进程或无线接口层守护(RILD)进程。
在一个实施方式中,该方法还包括:
在内核态中,在安卓域的服务管理器对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用。
在一个实施方式中,所述在host域服务管理器注册全域访问的服务进程包括:
在内核态中:生成该服务进程对应的节点,在该服务进程对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用,该host域服务管理器对应的binder_proc对象的引用表中增加包含第一句柄值与该节点的指针的引用;
在用户态中:在该host域服务管理器生成注册记录,所述注册记录包含该服务进程的服务名称和该第一句柄值。
在一个实施方式中,所述当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端,包括:
客户端调用安卓域的服务管理器以尝试访问该服务进程;
安卓域的服务管理器确定本域不存在该服务进程,通过该预定的句柄值的引用访问host域服务管理器;
host域服务管理器查询本域存在该服务进程,返回第一句柄值给Binder驱动模块;
Binder驱动模块基于第一句柄值确定该节点的指针,在安卓域的服务管理器对应的binder_proc对象中建立包含第二句柄值与该节点的指针的引用,发送第二句柄值到安卓域的服务管理器;
安卓域的服务管理器将第二句柄值传递到客户端;
在客户端对应的binder_proc对象中建立包含第三句柄值和该节点的指针的引用;
客户端基于该第三句柄值生成对服务进程远程调用的BpBinder对象。
一种双系统终端的服务访问装置,所述双系统包含两个安卓域和host域;该装置包括:
部属模块,用于在host域中部署host域服务管理器ServiceManager,在所述host域服务管理器注册全域访问的服务进程,其中所述host域服务管理器在Binder驱动模块中注册有预定的句柄值;
服务模块,用于当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端。
在一个实施方式中,所述全域访问的服务进程为独占硬件资源的本地native进程。
在一个实施方式中,所述本地进程包括全球定位系统守护GPSD进程或无线接口层守护RILD进程。
在一个实施方式中,所述部属模块,还用于在内核态中,在安卓域的服务管理器对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用。
在一个实施方式中,所述部属模块,用于在内核态中:生成该服务进程对应的节点,在该服务进程对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用,该host域服务管理器对应的binder_proc对象的引用表中增加包含第一句柄值与该节点的指针的引用;在用户态中:在该host域服务管理器生成注册记录,所述注册记录包含该服务进程的服务名称和该第一句柄值。
在一个实施方式中,所述服务模块,用于使能:客户端调用安卓域的服务管理器以尝试访问该服务进程;安卓域的服务管理器确定本域不存在该服务进程,通过该预定的句柄值的引用访问host域服务管理器;host域服务管理器查询本域存在该服务进程,返回第一句柄值给Binder驱动模块;Binder驱动模块基于第一句柄值确定该节点的指针,在安卓域的服务管理器对应的binder_proc对象中建立包含第二句柄值与该节点的指针的引用,发送第二句柄值到安卓域的服务管理器;安卓域的服务管理器将第二句柄值传递到客户端;在客户端对应的binder_proc对象中建立包含第三句柄值和该节点的指针的引用;客户端基于该第三句柄值生成对服务进程远程调用的BpBinder对象。
一种双系统终端的服务访问装置,包括处理器和存储器;
所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如上任一项所述的双系统终端的服务访问方法。
一种计算机可读存储介质,其中存储有计算机可读指令,该计算机可读指令用于执行如上任一项所述的双系统终端的服务访问方法。
从上述技术方案可以看出,在本发明实施方式中,在host域中部署host域服务管理器,在host域服务管理器注册全域访问的服务进程,其中host域服务管理器在Binder驱动模块中注册有预定的句柄值;当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端。本发明实施方式实现了基于Binder机制的服务进程的单例部署,该服务进程可提供服务给两个安卓系统的客户端进程调用,可以解决硬件冲突问题。
附图说明
图1为双系统终端的示意图。
图2为双系统终端的硬件冲突示意图。
图3为双系统中的隔离示意图。
图4为客户端关键数据结构调用关系示意图。
图5为根据本发明双系统终端的服务访问方法流程图。
图6为根据本发明双系统终端的示意图。
图7为根据本发明双系统终端的硬件访问示意图。
图8为根据本发明双系统终端的服务进程注册和访问示意图。
图9为根据本发明双系统终端的关键数据结构调用关系示意图。
图10为根据本发明双系统终端的服务访问装置的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
为了描述上的简洁和直观,下文通过描述若干代表性的实施方式来对本发明的方案进行阐述。实施方式中大量的细节仅用于帮助理解本发明的方案。但是很明显,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。由于汉语的语言习惯,下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。
Android内核是基于Linux系统,Android采用Binder来进行进程间通信(IPC)。Binder架构采用分层架构设计,每一层都有其不同的功能。Java应用层:对于上层应用通过调用AMP.startService,可以不用关心底层,经过层层调用,最终调用到AMS.startService。Java IPC层:Binder通信采用C/S架构,Android系统的基础架构已设计好Binder在Java framework层的Binder客户类BinderProxy和服务类Binder。Native IPC层:对于Native层,如果需要直接使用Binder(比如media相关),则可以直接使用BpBinder和BBinder即可,对于上一层Java IPC的通信也是基于这个层面。Kernel物理层:是Binder驱动(Driver)模块,前叙3层都运行在用户空间,对于用户空间的内存资源是不共享的,每个Android的进程只能运行在自己进程所拥有的虚拟地址空间,而内核空间却是可共享的。
Binder通信采用C/S架构,从组件视角来说,包含客户端(Client)、Server、ServiceManager以及Binder驱动,其中ServiceManager用于管理系统中的各种服务。无论是注册服务和获取服务的过程都需要ServiceManager。
在目前的双系统中,由于现有Binder架构及虚拟化方案限制,无法实现某些服务(service)进程的单例部署,由此可能存在硬件冲突及硬件资源浪费等问题。
图1为双系统终端的示意图。
由图1可见,双系统终端包括三个域,分别是Host域以及两个安卓域(图1中为Android1和Android2)。每个安卓域都具有自身的服务管理器、服务和客户端。可见,两个安卓域相互隔离。
在现有双系统中,由于需要支持两个安卓系统,各个安卓系统中对于服务管理器做了隔离,每个域仅有一个服务管理器,各域之间在获取服务管理器时,仅返回本域的服务管理器对象,因此实现了服务与异域客户端(client)的隔离。
此种情况下,对于一些native service,需要启用两个service,各自分布在不同的Android系统中。然而某些native进程,对于硬件资源很可能是独占的,若两个service同时运行,则不可避免的存在冲突,如控制GPS的GPSD进程及与通信芯片交互的RILD进程等。
图2为双系统终端的硬件冲突示意图。在图2中,当Android1域中的client1期望访问GPSD服务时,Android1域中的GPSD进程需要占用硬件资源。当Android2域中的client3期望访问GPSD服务时,Android2域中的GPSD进程需要占用硬件资源。因此,Android1域中的GPSD进程和Android2域中的GPSD进程同时运行,不可避免的存在硬件冲突。
图3为双系统中的隔离示意图。在双系统中,由于多数服务需要相互隔离,每个域只能获取本域的服务管理器以进行通讯和注册。其中,Binder驱动中在进程获取句柄(handle)值为0的引用时,返回同命名空间的服务管理器对应的节点。
图4为客户端关键数据结构调用关系示意图。
在Binder机制下,Service S注册时会产生如下操作:
(1)、在内核态:生成与Service S对应的节点(node),在该Service S所在的服务管理器对应的binder_proc对象的引用表中增加一条引用,该引用包含handle值(n)与node指针。
(2)、在用户态:该Service S所在域的服务管理器的进程中生成一条注册记录,记录中包含服务名称(图4中为“S”)与Handle值(n)。
在Binder机制下,Client端获取Service S的服务时,执行如下关键操作
(1)、Service S所在域的服务管理器查询到本地有Service名为“S”的服务记录,将handle值(n)传递给内核。
(2)、内核通过handle值(n)获得Service S的对应node对象,并在Client对应的binder_proc生成新的引用,生成新的handle值m并关联handle值m到Service S的node对象,然后添加引用到Client的引用表中。
(3)、内核将新的handle值m传递给Client进程,Client进程生成新的BpBinder对象。至此,Client通过该新的BpBinder对象就可以实现对Service S的远程调用。
本发明实施方式期望实现一种机制,可以实现基于Binder机制的service的单例部署,该service可提供服务给两个Android系统的Client进程调用。由于双系统中存在3个域,不管service部署在哪个域中,都必须解决Binder的跨域访问问题。与此同时,期望不破坏原有双系统中Binder隔离特性。
在本发明实施方式中,需要全域访问(全域包括两个安卓域,全域访问包括可以被两个安卓域访问)的服务进程部署在host域,而且在host域部署可跨域访问的服务管理器。全域访问的服务进程,即为可以被两个安卓域访问的服务进程。
本发明实施方式通过改造Binder驱动及服务管理器获取服务流程,实现一个基于Binder跨命名空间访问的Service流程,单独一个命名空间host域中部署服务管理器与单例Service。单例Service通过本域服务管理器进行注册,host域的服务管理器可被全域任意进程通过某个特定handle值(如0xc0ffee)获取。Android域的Client进程仍然访问本域服务管理器进行获取服务(getService)操作,本域服务管理器查询本地无指定Service记录后,跨域调用host域的服务管理器进行查询,并最终返回host域的service的引用传递给Client。
图5为根据本发明双系统终端的服务访问方法流程图。双系统包含两个安卓域和host域。
如图5所示,该方法包括:
步骤501:在host域中部署host域服务管理器,在host域服务管理器注册全域访问的服务进程,其中host域服务管理器在Binder驱动模块中注册有预定的句柄值。
步骤502:当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过预定的句柄值访问host域服务管理器以在host域服务管理器中查询服务进程,并将服务进程返回给所述客户端。
在一个实施方式中,全域访问的服务进程为独占硬件资源的本地(native)进程。优选地,本地进程包括GPSD进程或RILD进程,等等。
在一个实施方式中,该方法还包括:在内核态中,在安卓域的服务管理器对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用。
在一个实施方式中,在host域服务管理器注册全域访问的服务进程包括:
在内核态中:生成该服务进程对应的节点,在该服务进程对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用,该host域服务管理器对应的binder_proc对象的引用表中增加包含第一句柄值与该节点的指针的引用;
在用户态中:在该host域服务管理器生成注册记录,所述注册记录包含该服务进程的服务名称和该第一句柄值。
在一个实施方式中,当安卓域的服务管理器从客户端接收到针对该服务进程的请求且在本地不能查询到该服务进程时,通过该预定的句柄值访问host域服务管理器以在host域服务管理器中查询服务进程,并将服务进程返回给客户端包括:客户端调用安卓域的服务管理器以尝试访问该服务进程;安卓域的服务管理器确定本域不存在该服务进程,通过该预定的句柄值的引用访问host域服务管理器;host域服务管理器查询本域存在该服务进程,返回第一句柄值给Binder驱动模块;Binder驱动模块基于第一句柄值确定该节点的指针,在安卓域的服务管理器对应的binder_proc对象中建立包含第二句柄值与该节点的指针的引用,发送第二句柄值到安卓域的服务管理器;安卓域的服务管理器将第二句柄值传递到客户端;在客户端对应的binder_proc对象中建立包含第三句柄值和该节点的指针的引用;客户端基于该第三句柄值生成对服务进程远程调用的BpBinder对象。
具体地,在本发明实施方式中,在Binder驱动增加ioctl接口SET_GCONTEXT_MGR,以供Host域的服务管理器调用,内核生成并记录这个特殊服务的node。在Binder驱动中,对handle为预定的句柄值(比如,0xc0ffee值)的引用做特殊处理,强制关联Host域的服务管理器建立的特殊服务的node。需全域部署的Service部署在host域中,调用host域的服务管理器提供的服务注册接口进行注册。Android域中的服务管理器在获得客户端进程(client)的获取服务(getservice)请求后,若本地获取不到服务实体,通过handle值为预定的句柄值(承上例,0xc0ffee)获取到host域的服务管理器实例,并查询是否有该服务,并将获取的服务中转传给Client。
图6为根据本发明双系统终端的示意图。
由图6可见,双系统终端包括三个域,分别是Host域,以及两个安卓域(图6中为Android1和Android2)。每个安卓域都具有自身的服务管理器,并可以具有各自的服务和各自的客户端。两个安卓域相互隔离。而且,在Host域中,部属有自身的服务管理器和全域访问的服务。
图7为根据本发明双系统终端的硬件访问示意图。
如图7所示,当Android1域中的client1期望访问GPSD服务时,Host域中的GPSD进程可以为client1提供GPSD服务。当Android2域中的client3期望访问GPSD服务时,Host域中的GPSD进程可以为client3提供GPSD服务。Host域中的GPSD进程可以自身协调为client1和client3提供GPSD服务的时机。在同一时刻,只有Host域中的GPSD进程访问硬件资源。因此,可以避免可能存在的硬件冲突。
由图7可见,此种情况下,仅有一个GPSD进程与硬件资源进行交互,不存在硬件资源互斥的情况,Android系统在使用硬件资源时不存在冲突情况,一个直接的收益就是两个系统可以同时使用硬件资源提供的服务。
图8为根据本发明双系统终端的服务进程注册和访问示意图。
如图8所示,该方法包括:
步骤801:Host域的ServiceManager基于ioctl接口SET_GCONTEXT_MGR向Binder驱动模块注册,Host域的ServiceManager注册有预定的句柄值。
步骤802:Host域的Service向Host域的ServiceManage发送registerAsService消息,以注册为服务。
步骤803:安卓域的ServiceManager基于ioctl接口SET_CONTEXT_MGR向Binder驱动模块注册。
步骤804~805:安卓域的客户端(client)向安卓域的ServiceManager发送针对该服务的请求,将该请求发送到Binder驱动模块。
步骤806~807:安卓域的ServiceManager在本域获取该服务失败,直接通过预定的句柄值访问Binder驱动模块。
步骤808:Binder驱动模块通过该预定的句柄值找到Host域的ServiceManager。
步骤809~步骤811:Host域的ServiceManager在Host域查找到该Service,并将Service返回安卓域的客户端。
图9为根据本发明双系统终端的关键数据结构调用关系示意图。
在图9中,注册流程包括:
(1)、Host域的Service S建立handle为0xc0ffee的引用;
(2)、调用Host域的Servicemanager的注册服务接口;
(3)、内核中Servicemanager对应的binder_proc建立handle为n的新引用指向Service S;
(4)、host域的Service S记录下服务名称(“S”)和handle值(n)。
在图9中,获取服务流程包括:
(1)、Client通过handle为0的引用调用Android域Servicemanager的getService方法。
(2)、Android域的Servicemanager查询本域无服务名为S的服务,通过handle为0xc0ffee的引用访问host域Servicemanager进行查询。
(3)、Host域Servicemanager查询本地存在该服务,返回handle值(n)给binder驱动。
(4)、Binder驱动在Android域的Servicemanager对应的binder_proc中建立索引为l的引用,返回给Android域的Servicemanager。
(5)、Android域ServiceManager将handle l传递回Client,此过程中Client对应内核的binder_proc建立handle为m的引用指向Service,最终将handle m传回给Client。Client进程基于handle m生成BpBinder对象BpBinder(m)。至此,Client通过该BpBinder(m)就可以实现对Service S的远程调用。
基于上述描述,本发明实施方式还提出了一种双系统终端的服务访问装置。
图10为根据本发明双系统终端的服务访问装置的结构图。所述双系统包含两个安卓域和host域。
如图10所示,该装置包括:
部属模块1001,用于在host域中部署host域服务管理器ServiceManager,在所述host域服务管理器注册全域访问的服务进程,其中所述host域服务管理器在Binder驱动模块中注册有预定的句柄值;
服务模块1002,用于当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端。
在一个实施方式中,所述全域访问的服务进程为独占硬件资源的native进程。优选的,所述本地进程包括GPSD进程或RILD进程。
在一个实施方式中,部属模块1001,还用于在内核态中,在安卓域的服务管理器对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用。
在一个实施方式中,部属模块1001,用于在内核态中:生成该服务进程对应的节点,在该服务进程对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用,该host域服务管理器对应的binder_proc对象的引用表中增加包含第一句柄值与该节点的指针的引用;在用户态中:在该host域服务管理器生成注册记录,所述注册记录包含该服务进程的服务名称和该第一句柄值。
在一个实施方式中,服务模块1002,用于使能:客户端调用安卓域的服务管理器以尝试访问该服务进程;安卓域的服务管理器确定本域不存在该服务进程,通过该预定的句柄值的引用访问host域服务管理器;host域服务管理器查询本域存在该服务进程,返回第一句柄值给Binder驱动模块;Binder驱动模块基于第一句柄值确定该节点的指针,在安卓域的服务管理器对应的binder_proc对象中建立包含第二句柄值与该节点的指针的引用,发送第二句柄值到安卓域的服务管理器;安卓域的服务管理器将第二句柄值传递到客户端;在客户端对应的binder_proc对象中建立包含第三句柄值和该节点的指针的引用;客户端基于该第三句柄值生成对服务进程远程调用的BpBinder对象。
本发明还提出有处理器-存储器架构的双系统终端的服务访问装置。双系统终端的服务访问装置包括处理器和存储器;存储器中存储有可被处理器执行的应用程序,用于使得处理器执行如上所述的双系统终端的服务访问方法。
其中,存储器具体可以实施为电可擦可编程只读存储器(EEPROM)、快闪存储器(Flash memory)、可编程程序只读存储器(PROM)等多种存储介质。处理器可以实施为包括一或多个中央处理器或一或多个现场可编程门阵列,其中现场可编程门阵列集成一或多个中央处理器核。具体地,中央处理器或中央处理器核可以实施为CPU或MCU。
综上所述,在本发明实施方式中,在host域中部署host域服务管理器,在host域服务管理器注册全域访问的服务进程,其中host域服务管理器在Binder驱动模块中注册有预定的句柄值;当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端。本发明实施方式实现了基于Binder机制的服务进程的单例部署,该服务进程可提供服务给两个安卓系统的客户端进程调用,可以解决硬件冲突问题。
需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。
各实施方式中的硬件模块可以以机械方式或电子方式实现。例如,一个硬件模块可以包括专门设计的永久性电路或逻辑器件(如专用处理器,如FPGA或ASIC)用于完成特定的操作。硬件模块也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。至于具体采用机械方式,或是采用专用的永久性电路,或是采用临时配置的电路(如由软件进行配置)来实现硬件模块,可以根据成本和时间上的考虑来决定。
本发明还提供了一种机器可读的存储介质,存储用于使一机器执行如本文所述方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施方式的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。此外,还可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作。还可以将从存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施方式中任一实施方式的功能。
用于提供程序代码的存储介质实施方式包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
以上所述,仅为本发明的较佳实施方式而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种双系统终端的服务访问方法,其特征在于,所述双系统包含两个安卓域和host域;该方法包括:
在host域中部署host域服务管理器ServiceManager,在所述host域服务管理器注册全域访问的服务进程,其中所述host域服务管理器在Binder驱动模块中注册有预定的句柄值;
当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端。
2.根据权利要求1所述的双系统终端的服务访问方法,其特征在于,所述全域访问的服务进程为独占硬件资源的本地native进程。
3.根据权利要求2所述的双系统终端的服务访问方法,其特征在于,所述本地进程包括全球定位系统守护GPSD进程或无线接口层守护RILD进程。
4.根据权利要求1所述的双系统终端的服务访问方法,其特征在于,该方法还包括:
在内核态中,在安卓域的服务管理器对应的binder_proc对象的引用表中,增加包含所述预定的句柄值与所述host域服务管理器的指针的引用。
5.根据权利要求1所述的双系统终端的服务访问方法,其特征在于,所述在host域服务管理器注册全域访问的服务进程包括:
在内核态中:生成该服务进程对应的节点,在该服务进程对应的binder_proc对象的引用表中增加包含所述预定的句柄值与所述host域服务管理器的指针的引用,该host域服务管理器对应的binder_proc对象的引用表中增加包含第一句柄值与该节点的指针的引用;
在用户态中:在该host域服务管理器生成注册记录,所述注册记录包含该服务进程的服务名称和该第一句柄值。
6.根据权利要求5所述的双系统终端的服务访问方法,其特征在于,所述当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端包括:
客户端调用安卓域的服务管理器以尝试访问该服务进程;
安卓域的服务管理器确定本域不存在该服务进程,通过该预定的句柄值的引用访问host域服务管理器;
host域服务管理器查询本域存在该服务进程,返回第一句柄值给Binder驱动模块;
Binder驱动模块基于第一句柄值确定该节点的指针,在安卓域的服务管理器对应的binder_proc对象中建立包含第二句柄值与该节点的指针的引用,发送第二句柄值到安卓域的服务管理器;
安卓域的服务管理器将第二句柄值传递到客户端;
在客户端对应的binder_proc对象中建立包含第三句柄值和该节点的指针的引用;
客户端基于该第三句柄值生成对所述服务进程远程调用的BpBinder对象。
7.一种双系统终端的服务访问装置,其特征在于,所述双系统包含两个安卓域和host域;该装置包括:
部属模块,用于在host域中部署host域服务管理器ServiceManager,在所述host域服务管理器注册全域访问的服务进程,其中所述host域服务管理器在Binder驱动模块中注册有预定的句柄值;
服务模块,用于当安卓域的服务管理器从客户端接收到针对该服务进程的访问请求且在本域不能查询到该服务进程时,通过所述预定的句柄值访问所述host域服务管理器以在所述host域服务管理器中查询所述服务进程,并将所述服务进程返回给所述客户端。
8.根据权利要求7所述的双系统终端的服务访问装置,其特征在于,所述全域访问的服务进程为独占硬件资源的本地native进程。
9.根据权利要求8所述的双系统终端的服务访问装置,其特征在于,所述本地进程包括全球定位系统守护GPSD进程或无线接口层守护RILD进程。
10.根据权利要求7所述的双系统终端的服务访问装置,其特征在于,
所述部属模块,还用于在内核态中,在安卓域的服务管理器对应的binder_proc对象的引用表中增加包含预定的句柄值与host域服务管理器的指针的引用。
11.根据权利要求7所述的双系统终端的服务访问装置,其特征在于,
所述部属模块,用于在内核态中:生成该服务进程对应的节点,在该服务进程对应的binder_proc对象的引用表中增加包含所述预定的句柄值与所述host域服务管理器的指针的引用,该host域服务管理器对应的binder_proc对象的引用表中增加包含第一句柄值与该节点的指针的引用;在用户态中:在该host域服务管理器生成注册记录,所述注册记录包含该服务进程的服务名称和该第一句柄值。
12.根据权利要求11所述的双系统终端的服务访问装置,其特征在于,
所述服务模块,用于使能:客户端调用安卓域的服务管理器以尝试访问该服务进程;安卓域的服务管理器确定本域不存在该服务进程,通过该预定的句柄值的引用访问host域服务管理器;host域服务管理器查询本域存在该服务进程,返回第一句柄值给Binder驱动模块;Binder驱动模块基于第一句柄值确定该节点的指针,在安卓域的服务管理器对应的binder_proc对象中建立包含第二句柄值与该节点的指针的引用,发送第二句柄值到安卓域的服务管理器;安卓域的服务管理器将第二句柄值传递到客户端;在客户端对应的binder_proc对象中建立包含第三句柄值和该节点的指针的引用;客户端基于该第三句柄值生成对服务进程远程调用的BpBinder对象。
13.一种双系统终端的服务访问装置,其特征在于,包括处理器和存储器;
所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如权利要求1至6中任一项所述的双系统终端的服务访问方法。
14.一种计算机可读存储介质,其特征在于,其中存储有计算机可读指令,该计算机可读指令用于执行如权利要求1至6中任一项所述的双系统终端的服务访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910500201.0A CN112068968B (zh) | 2019-06-11 | 2019-06-11 | 一种双系统终端的服务访问方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910500201.0A CN112068968B (zh) | 2019-06-11 | 2019-06-11 | 一种双系统终端的服务访问方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112068968A true CN112068968A (zh) | 2020-12-11 |
CN112068968B CN112068968B (zh) | 2022-10-18 |
Family
ID=73658376
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910500201.0A Active CN112068968B (zh) | 2019-06-11 | 2019-06-11 | 一种双系统终端的服务访问方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112068968B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783675A (zh) * | 2021-01-29 | 2021-05-11 | 中汽创智科技有限公司 | Ipc通信方法 |
CN113824888A (zh) * | 2021-11-23 | 2021-12-21 | 北京鲸鲮信息系统技术有限公司 | Linux兼容Android的相机控制方法、系统、装置及介质 |
CN113934464A (zh) * | 2021-12-14 | 2022-01-14 | 北京鲸鲮信息系统技术有限公司 | Linux系统中启动安卓应用的方法、装置和电子设备 |
CN115509767A (zh) * | 2021-06-23 | 2022-12-23 | 华为技术有限公司 | 一种服务进程的调用方法及相关装置 |
WO2023093039A1 (zh) * | 2021-11-25 | 2023-06-01 | 北京字节跳动网络技术有限公司 | 一种进程间通讯方法及系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100042573A1 (en) * | 2008-08-14 | 2010-02-18 | Tealeaf Technology, Inc. | Method and system for communication between a client system and a server system |
CN105138409A (zh) * | 2015-08-25 | 2015-12-09 | 西南交通大学 | 基于多进程的铁路列车运行图编制系统及方法 |
CN105357256A (zh) * | 2015-09-28 | 2016-02-24 | 深信服网络科技(深圳)有限公司 | 管理移动设备的方法及服务器 |
US20160149958A1 (en) * | 2014-11-21 | 2016-05-26 | Blackberry Limited | Sharing data across profiles |
CN107193674A (zh) * | 2017-06-29 | 2017-09-22 | 武汉斗鱼网络科技有限公司 | 在线推送消息的处理方法及装置 |
CN107547474A (zh) * | 2016-06-27 | 2018-01-05 | 中兴通讯股份有限公司 | 一种异构型双系统的图形显示方法和设备 |
CN108089929A (zh) * | 2016-11-22 | 2018-05-29 | 沈阳美行科技有限公司 | 一种用插件操作应用程序的方法及装置 |
US20180191695A1 (en) * | 2016-12-31 | 2018-07-05 | Nok Nok Labs, Inc. | System and method for bootstrapping a user binding |
CN109117278A (zh) * | 2018-06-29 | 2019-01-01 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109213613A (zh) * | 2018-08-27 | 2019-01-15 | Oppo广东移动通信有限公司 | 图像信息的传输方法、装置、存储介质及电子设备 |
US20190028554A1 (en) * | 2015-12-28 | 2019-01-24 | Amazon Technologies, Inc. | Function Based Dynamic Traffic Management for Network Services |
-
2019
- 2019-06-11 CN CN201910500201.0A patent/CN112068968B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100042573A1 (en) * | 2008-08-14 | 2010-02-18 | Tealeaf Technology, Inc. | Method and system for communication between a client system and a server system |
US20160149958A1 (en) * | 2014-11-21 | 2016-05-26 | Blackberry Limited | Sharing data across profiles |
CN105138409A (zh) * | 2015-08-25 | 2015-12-09 | 西南交通大学 | 基于多进程的铁路列车运行图编制系统及方法 |
CN105357256A (zh) * | 2015-09-28 | 2016-02-24 | 深信服网络科技(深圳)有限公司 | 管理移动设备的方法及服务器 |
US20190028554A1 (en) * | 2015-12-28 | 2019-01-24 | Amazon Technologies, Inc. | Function Based Dynamic Traffic Management for Network Services |
CN107547474A (zh) * | 2016-06-27 | 2018-01-05 | 中兴通讯股份有限公司 | 一种异构型双系统的图形显示方法和设备 |
CN108089929A (zh) * | 2016-11-22 | 2018-05-29 | 沈阳美行科技有限公司 | 一种用插件操作应用程序的方法及装置 |
US20180191695A1 (en) * | 2016-12-31 | 2018-07-05 | Nok Nok Labs, Inc. | System and method for bootstrapping a user binding |
CN107193674A (zh) * | 2017-06-29 | 2017-09-22 | 武汉斗鱼网络科技有限公司 | 在线推送消息的处理方法及装置 |
CN109117278A (zh) * | 2018-06-29 | 2019-01-01 | Oppo(重庆)智能科技有限公司 | 一种移动终端及其进程间通信的限制方法、存储介质 |
CN109213613A (zh) * | 2018-08-27 | 2019-01-15 | Oppo广东移动通信有限公司 | 图像信息的传输方法、装置、存储介质及电子设备 |
Non-Patent Citations (3)
Title |
---|
KONGLINGBIN: ""句柄的概念"", 《HTTPS://WWW.CNBLOGS.COM/KLB561/P/10555571.HTML》 * |
YUDI ZHENG: ""Comprehensive Multiplatform Dynamic Program Analysis for Java and Android"", 《IEEE SOFTWARE》 * |
胡嘉杰: ""Android系统中虚拟Win32环境的一种高性能实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783675A (zh) * | 2021-01-29 | 2021-05-11 | 中汽创智科技有限公司 | Ipc通信方法 |
CN112783675B (zh) * | 2021-01-29 | 2023-08-22 | 中汽创智科技有限公司 | Ipc通信方法 |
CN115509767A (zh) * | 2021-06-23 | 2022-12-23 | 华为技术有限公司 | 一种服务进程的调用方法及相关装置 |
CN115509767B (zh) * | 2021-06-23 | 2024-06-04 | 华为技术有限公司 | 一种服务进程的调用方法及相关装置 |
CN113824888A (zh) * | 2021-11-23 | 2021-12-21 | 北京鲸鲮信息系统技术有限公司 | Linux兼容Android的相机控制方法、系统、装置及介质 |
WO2023093039A1 (zh) * | 2021-11-25 | 2023-06-01 | 北京字节跳动网络技术有限公司 | 一种进程间通讯方法及系统 |
CN113934464A (zh) * | 2021-12-14 | 2022-01-14 | 北京鲸鲮信息系统技术有限公司 | Linux系统中启动安卓应用的方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112068968B (zh) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112068968B (zh) | 一种双系统终端的服务访问方法和装置 | |
CN113722128B (zh) | 定位信息的获取方法、装置、电子设备及存储介质 | |
EP0447038B1 (en) | A system for establishing a communication path in a closely coupled computer system | |
CN112073448B (zh) | 一种双系统终端的服务隔离方法和装置 | |
US20120030673A1 (en) | Thin client system, management server, virtual machine creation management method and virtual machine creation management program | |
US7533377B2 (en) | Achieving autonomic behavior in an operating system via a hot-swapping mechanism | |
US20210232345A1 (en) | Image file optimizations by opportunistic sharing | |
US11573814B1 (en) | Sharing prepopulated container image caches among container execution environments | |
US20200174818A1 (en) | Virtual machine management | |
US8090686B2 (en) | Multi-master attribute uniqueness | |
US11301284B2 (en) | Method for managing VNF instantiation and device | |
WO2018086437A1 (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN114697231B (zh) | 基于网关的服务发现与服务注册方法和装置 | |
CN111290827A (zh) | 数据处理的方法、装置和服务器 | |
CN109347716B (zh) | 消费者vnf的实例化方法及装置 | |
CN113342711A (zh) | 页表更新方法、装置及相关设备 | |
US20190068606A1 (en) | System and method for supporting object-based security | |
US8996484B2 (en) | Recursive lock-and-propagate operation | |
CN114995948A (zh) | 下载安全容器镜像文件的方法、装置、设备及系统 | |
CN112256351B (zh) | Feign组件的实现方法、微服务调用方法及装置 | |
CN111124437A (zh) | 一种基于OpenStack的裸机资源配置信息获取方法、系统及设备 | |
CN109347661B (zh) | 消费者vnf的实例化方法及装置 | |
WO2015117278A1 (zh) | 时钟中断信号的获取方法和nfv功能实体 | |
Shetty et al. | Cloud based application development for mobile devices for accessing LBS | |
CN111309474B (zh) | 通信方法、通信装置及分布式服务注册中心 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |