CN112073448A - 一种双系统终端的服务隔离方法和装置 - Google Patents
一种双系统终端的服务隔离方法和装置 Download PDFInfo
- Publication number
- CN112073448A CN112073448A CN201910500130.4A CN201910500130A CN112073448A CN 112073448 A CN112073448 A CN 112073448A CN 201910500130 A CN201910500130 A CN 201910500130A CN 112073448 A CN112073448 A CN 112073448A
- Authority
- CN
- China
- Prior art keywords
- service
- service manager
- binder
- driving module
- command space
- 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
-
- 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/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/02—Terminal devices
- H04W88/06—Terminal devices adapted for operation in multiple networks or having at least two operational modes, e.g. multi-mode terminals
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明实施方式提出一种双系统终端的服务隔离方法和装置。所述双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器;该方法包括:在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系;当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。实现了双系统终端的服务隔离。
Description
技术领域
本发明属于双系统技术领域,特别是涉及一种双系统终端的服务隔离方法和装置。
背景技术
安卓(Android)系统基于Linux操作系统,分为用户空间及内核空间,所有进程均部署在用户空间。Binder的进程间通讯(IPC),需借助于内核提供的Binder驱动。内核在用户空间注册/dev/binder节点,并提供open及ioctl等接口供用户空间使用。Binder成为Android系统中各客户进程与服务进程最重要的通讯方式。
基于容器的双系统终端,需要运行两个Android系统,并共用一个内核空间,严格意义上来讲,Android系统中的业务逻辑,需要相互隔离。也就是说,在一个Android系统下部署的进程,在获取基于Binder机制实现的服务(Service)时,只能获取本Android系统下的Service。
然而,当前的Binder架构,未考虑并实现针对多容器系统下的binder IPC方式的隔离方案。
发明内容
本发明实施例提出一种双系统终端的服务隔离方法和装置。
本发明实施例的技术方案如下:
一种双系统终端的服务隔离方法,所述双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器;该方法包括:
在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系;
当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。
在一个实施方式中,所述服务管理器获取请求包含句柄值为零的BpBinder对象。
在一个实施方式中,所述在Binder驱动模块中生成关联表包括:
服务管理器在初始化时开Binder驱动模块;
Binder驱动模块创建该服务管理器的Binder_Proc结构;
服务管理器调用ioctl接口以将自身注册成为服务管理器所部属的安卓域内的唯一管理进程;
Binder驱动模块创建对应于该服务管理器的节点Node;
Binder驱动模块获取该服务管理器所在的命令空间,在关联表中保存该服务管理器所在的命令空间与该服务管理器的关联关系。
在一个实施方式中,所述当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述映射表以确定出服务管理器,并将所述服务管理器返回给所述进程包括:
所述进程开启Binder驱动模块;
Binder驱动模块创建该进程的Binder_Proc结构,并获取该进程所在的命令空间;
当句柄值为零的BpBinder对象传输数据时,Binder驱动模块通过ioctl接口生成句柄值为零的引用项;
Binder驱动模块基于该进程所在的命令空间查询所述关联表以确定出服务管理器,将服务管理器的指针赋值给所述引用项,以为所述进程实现对所述服务管理器的引用。
在一个实施方式中,所述进程为服务端Service,且所述进程通过所述服务管理器的增加服务addService方法在所述服务管理器处注册;或
所述进程为客户端Client,且所述进程通过所述服务管理器的获取服务getService方法从所述服务管理器获取Service。
一种双系统终端的服务隔离装置,所述双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器;该装置包括:
关联表生成模块,用于在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系;
返回模块,用于当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。
在一个实施方式中,所述服务管理器获取请求包含句柄值为零的BpBinder对象。
在一个实施方式中,所述关联表生成模块,用于使能:服务管理器在初始化时开Binder驱动模块;Binder驱动模块创建该服务管理器的Binder_Proc结构;服务管理器调用ioctl接口以将自身注册成为服务管理器所部属的安卓域内的唯一管理进程;Binder驱动模块创建对应于该服务管理器的节点Node;Binder驱动模块获取该服务管理器所在的命令空间,在关联表中保存该服务管理器所在的命令空间与该服务管理器的关联关系。
在一个实施方式中,所述返回模块,用于使能:所述进程开启Binder驱动模块;Binder驱动模块创建该进程的Binder_Proc结构,并获取该进程所在的命令空间;当句柄值为零的BpBinder对象传输数据时,Binder驱动模块通过ioctl接口生成句柄值为零的引用项;Binder驱动模块基于该进程所在的命令空间查询所述关联表以确定出服务管理器,将服务管理器的指针赋值给所述引用项,以为所述进程实现对所述服务管理器的引用。
在一个实施方式中,所述进程为服务端Service,该装置包括服务注册模块,用于使能所述进程通过所述服务管理器的增加服务addService方法在所述服务管理器处注册;或
所述进程为客户端Client,该装置包括服务获取模块,用于使能所述进程通过所述服务管理器的获取服务getService方法从所述服务管理器获取Service。
一种双系统终端的服务隔离装置,包括处理器和存储器;
所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如上任一项所述的双系统终端的服务隔离方法。
一种计算机可读存储介质,其中存储有计算机可读指令,该计算机可读指令用于执行如上任一项所述的双系统终端的服务隔离方法。
从上述技术方案可以看出,在本发明实施方式中,双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器;该方法包括:在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系;当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。可见,在本发明实施方式中,每个命名空间允许注册一个服务管理器。服务及客户端在获取服务管理器对象时,返回本命名空间所在的服务管理器对象,从而实现双系统终端的服务隔离。
附图说明
图1为双系统终端错误访问服务的示意图。
图2为根据本发明双系统终端的服务隔离方法流程图。
图3为根据本发明双系统终端的服务管理器注册示意图。
图4为根据本发明双系统终端的服务管理器引用处理示意图。
图5为根据本发明双系统终端的调用关系示意图。
图6为根据本发明双系统终端的服务隔离装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
为了描述上的简洁和直观,下文通过描述若干代表性的实施方式来对本发明的方案进行阐述。实施方式中大量的细节仅用于帮助理解本发明的方案。但是很明显,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。由于汉语的语言习惯,下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。
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。
在Android系统中,Binder作为操作系统中最常用的IPC方式,具备以下优点:(1)、使用便捷:Binder机制对于Client端与Service端的接口进行了高度封装,使得Client端的接口函数的参数类型与返回值类型与Service端提供的完全一致。(2)、一对多的服务部署方式:Service端可以同时为多个Client端提供调用服务,使得Client端无需关注调用冲突问题。(3)、安全性高:Binder机制的UID/PID是由Binder机制本身在内核空间添加身份标识,安全性高;并且Binder可以建立私有通道,这是linux的通信机制所无法实现的(Linux访问的接入点是开放的)。(4)、高效的数据传输性能:普通的IPC方式(如管道、消息队列、socket等)数据在进程间的传输,至少需要两次拷贝,一次从输出进程拷贝到传输介质中,第二次是从传输介质中拷贝到输入进程中。Binder机制中,当把同一块物理页面同时映射到进程空间和内核空间时,当需要在两者之间传递数据时,只需要其中任意一方把数据拷贝到物理页面,另一方直接读取即可,也就是说,数据的跨进程传递,只需要一次拷贝就可以完成。
正因为Binder有以上优点,Binder成为Android系统中各客户进程与服务进程最重要的通讯方式。一个Android系统中要实现Client与Service之间的调用关系,通常需要以下流程:
(1)、ServiceManager进程作为代理,在初始化时调用binder驱动的ioctl方法BINDER_SET_CONTEXT_MGR将本进程注册成为系统唯一的管理进程,并在内核空间分配唯一索引,其他所有进程可以通过指定索引,直接获取ServiceManager的服务对象。
(2)、Service端通过Binder调用Servicemanager的增加服务(addService)方法进行注册
(3)、Client端通过调用Servicemanager提供的获取服务(getService)方法,获取实际的Service对象。
(4)、Client调用Service提供的接口进行RPC调用。
基于容器的多系统终端,需要运行至少两个Android系统,并共用一个内核空间,Android系统中的业务逻辑,严格意义上来讲,需要相互隔离。也就是说,一个Android系统下部署的进程,在获取基于Binder机制实现的Service时,只能获取本Android下的Service。然而,当前的Binder架构,未考虑并实现针对多容器系统下的binder IPC方式的隔离方案。
图1为双系统终端错误访问服务的示意图。
如图1所示,双系统终端运行两个安卓系统,分别为Android1和Android2。在Android1系统中,部属有一个电源管理服务Powermanangerservice;在Android2系统中,部属有另一个电源管理服务Powermanangerservice’。Powermanangerservice和Powermanangerservice’的service名相同,但当Android1中的客户端(Client)调用电源服务相关的接口时,按照预期,处理该调用的服务应该是Powermanangerservice,而并非Powermanangerservice’。然而,当前的Binder架构未考虑针对多容器系统下的binder IPC方式的隔离方案,可能导致返回的服务是Powermanangerservice’。
申请人发现:ServiceManager作为最重要的进程,主要功能有以下两点:
(1)、各服务的注册,注册信息包括:服务名与服务句柄。
(2)、客户端的服务获取。客户端传入服务名,ServiceManager返回服务句柄。原生binder机制中,仅支持单个ServiceManager部署,多个Android系统中服务存在重名问题,在ServiceManager注册时,存在不确定性,这种不确定性必定会影响到客户端的服务访问。
申请人发现:在现有binder机制中,仅支持单个ServiceManager部署,多个Android系统中服务存在重名问题,在ServiceManager注册时,存在不确定性,这种不确定性必定会影响到客户端的服务访问。
为解决该技术问题,首先,需要解决ServiceManager的部署问题,因多个Android系统中,服务很大一部分是相同的,因此不同的Android系统需要由单独的一个ServiceManager进行管理。由此,就必须修改Binder驱动模块,支持多个ServiceManager的部署。另外,在完成ServiceManager部署后,每个Android系统下的服务在注册服务时,仅能在本系统中的ServiceManager中进行注册,而本域的客户端在获取服务是也只能访问本系统的ServiceManager。因此,在Binder驱动模块需要做访问控制。
在现有的Binder驱动模块的原生架构中,每个进程在调用/dev/binder的开(open)方法时,都会在内核生成一个Binder_proc结构,该Binder_proc结构中会记录一个引用表(使用红黑树存储),用于记录本进程所有对其他进程的引用,表中每个元素包含两个域:句柄(handle)和节点(node)。
分别阐述handle和node域的作用:
(1)、handle即句柄,是一个非负整数,当用户空间创建一个BpBinder对象时,只要指定handle值便可获取对服务的引用对象。
(2)、node用于记录一个服务实体,node中存储的proc变量即为指向服务所属binder_proc实体的指针。Servicemanager的特殊点在于,Servicemanager所对应的node会被全局记录,而每个句柄为0的引用都会指向该node。因此一个进程获取一个Servicemanager的引用很简单,仅需构造一个句柄为0的BpBinder对象即可。
本发明的设计思想是,在基于多容器的多系统终端中,允许每个系统均能注册一个Servicemanager,并且Servicemanager只能被本系统的进程进行调用,由此实现服务注册和获取时的隔离。
对于Binder驱动做以下改造:
(1):按照命名空间区分,每个命名空间允许一个Servicemanager注册。双系统中,每个Android系统部署一个Servicemanager,当Servicemanager初始化时,调用binder提供的ioctl接口BINDER_SET_CONTEXT_MGR,内核构造并记录下node,并且将该node与此进程所在的命名空间相关联且存储在Servicemanager node的数组中(比如关联表)中。
(2):当用户空间通过获取Servicemanager引用时,返回本命名空间所在的Servicemanagerr引用。当用户空间进程需要建立handle为0的引用时,内核中获取进程所属的命名空间ID,在存储Servicemanager node的数组中进行查找,将本命名空间所对应的Servicemanager的node的指针赋给引用,由此实现对本命名空间中的servicemanager的引用。
基于上述分析,图2为根据本发明双系统终端的服务隔离方法流程图。双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器。
如图2所示,该方法包括:
步骤201:在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系。
步骤202:当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。
在一个实施方式中,所述服务管理器获取请求包含句柄值为零的BpBinder对象。
在一个实施方式中,所述在Binder驱动模块中生成关联表包括:
服务管理器在初始化时开Binder驱动模块;
Binder驱动模块创建该服务管理器的Binder_Proc结构;
服务管理器调用ioctl接口以将自身注册成为服务管理器所部属的安卓域内的唯一管理进程;
Binder驱动模块创建对应于该服务管理器的节点Node;
Binder驱动模块获取该服务管理器所在的命令空间,在关联表中保存该服务管理器所在的命令空间与该服务管理器的关联关系。
在一个实施方式中,所述当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述映射表以确定出服务管理器,并将所述服务管理器返回给所述进程包括:
所述进程开启Binder驱动模块;
Binder驱动模块创建该进程的Binder_Proc结构,并获取该进程所在的命令空间;
当句柄值为零的BpBinder对象传输数据时,Binder驱动模块通过ioctl接口生成句柄值为零的引用项;
Binder驱动模块基于该进程所在的命令空间查询所述关联表以确定出服务管理器,将服务管理器的指针赋值给所述引用项,以为所述进程实现对所述服务管理器的引用。
在一个实施方式中,所述进程为服务端Service,且所述进程通过所述服务管理器的增加服务addService方法在所述服务管理器处注册;或
所述进程为客户端Client,且所述进程通过所述服务管理器的获取服务getService方法从所述服务管理器获取Service。
图3为根据本发明双系统终端的服务管理器注册示意图。
由图3可见,Servicemanager通过初始化时open/dev/binder节点,Binder驱动模块创建Servicemanager的binder_proc结构。Servicemanager调用BINDER_SET_CONTEXT_MGR的ioctl接口,Binder驱动模块新建一个对应于Servicemanager的node,并且获取Servicemanager所在的命名空间(namespace),存储在Servicemanager关联表中。
图4为根据本发明双系统终端的服务管理器引用处理示意图。
如图4所示,普通进程open/dev/binder节点,Binder驱动模块创建binder_proc结构,并记录下进程所在的namespace。普通进程通过handle为0的BpBinder对象传输数据时,通过ioctrl的BC_TRANSACTION接口,准备生成一个对servicemanager的引用。Binder驱动模块查询servicemanager关联表,结合进程所在的namespace,找到所需要的Servicemanager node,将指针赋值给handle为0的引用表,实现对Servicemanager的引用。
图5为根据本发明双系统终端的调用关系示意图。
由图5可见,双系统中,两个Android系统的服务相互隔离,本系统的进程只能访问本域的服务。
基于上述描述,本发明实施方式还提出了双系统终端的服务隔离装置。
图6为根据本发明双系统终端的服务隔离装置结构图。双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器。
如图6所示,该装置包括:
关联表生成模块601,用于在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系;
返回模块602,用于当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。
在一个实施方式中,所述服务管理器获取请求包含句柄值为零的BpBinder对象。
在一个实施方式中,关联表生成模块601,用于使能:服务管理器在初始化时开Binder驱动模块;Binder驱动模块创建该服务管理器的Binder_Proc结构;服务管理器调用ioctl接口以将自身注册成为服务管理器所部属的安卓域内的唯一管理进程;Binder驱动模块创建对应于该服务管理器的节点Node;Binder驱动模块获取该服务管理器所在的命令空间,在关联表中保存该服务管理器所在的命令空间与该服务管理器的关联关系。
在一个实施方式中,返回模块602,用于使能:所述进程开启Binder驱动模块;Binder驱动模块创建该进程的Binder_Proc结构,并获取该进程所在的命令空间;当句柄值为零的BpBinder对象传输数据时,Binder驱动模块通过ioctl接口生成句柄值为零的引用项;Binder驱动模块基于该进程所在的命令空间查询所述关联表以确定出服务管理器,将服务管理器的指针赋值给所述引用项,以为所述进程实现对所述服务管理器的引用。
在一个实施方式中,进程为服务端Service,该装置包括服务注册模块603,用于使能所述进程通过所述服务管理器的增加服务addService方法在所述服务管理器处注册。
在一个实施方式中,进程为客户端Client,该装置包括服务获取模块604,用于使能所述进程通过所述服务管理器的获取服务getService方法从所述服务管理器获取Service。
本发明还提出有处理器-存储器架构的双系统终端的服务隔离装置。双系统终端的服务隔离装置包括处理器和存储器;存储器中存储有可被处理器执行的应用程序,用于使得处理器执行如上所述的双系统终端的服务隔离方法。
其中,存储器具体可以实施为电可擦可编程只读存储器(EEPROM)、快闪存储器(Flash memory)、可编程程序只读存储器(PROM)等多种存储介质。处理器可以实施为包括一或多个中央处理器或一或多个现场可编程门阵列,其中现场可编程门阵列集成一或多个中央处理器核。具体地,中央处理器或中央处理器核可以实施为CPU或MCU。
综上所述,在本发明实施方式中,双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器;该方法包括:在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系;当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。可见,在本发明实施方式中,每个命名空间允许注册一个服务管理器。服务及客户端在获取服务管理器对象时,返回本命名空间所在的服务管理器对象,从而实现双系统终端的服务隔离。
需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。
各实施方式中的硬件模块可以以机械方式或电子方式实现。例如,一个硬件模块可以包括专门设计的永久性电路或逻辑器件(如专用处理器,如FPGA或ASIC)用于完成特定的操作。硬件模块也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。至于具体采用机械方式,或是采用专用的永久性电路,或是采用临时配置的电路(如由软件进行配置)来实现硬件模块,可以根据成本和时间上的考虑来决定。
本发明还提供了一种机器可读的存储介质,存储用于使一机器执行如本文所述方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施方式的功能的软件程序代码,且使该系统或者装置的计算机(或CPU或MPU)读出并执行存储在存储介质中的程序代码。此外,还可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作。还可以将从存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的CPU等来执行部分和全部实际操作,从而实现上述实施方式中任一实施方式的功能。
用于提供程序代码的存储介质实施方式包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上下载程序代码。
以上所述,仅为本发明的较佳实施方式而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种双系统终端的服务隔离方法,其特征在于,所述双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器;该方法包括:
在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系;
当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。
2.根据权利要求1所述的双系统终端的服务隔离方法,其特征在于,所述服务管理器获取请求包含句柄值为零的BpBinder对象。
3.根据权利要求1所述的双系统终端的服务隔离方法,其特征在于,所述在Binder驱动模块中生成关联表包括:
服务管理器在初始化时开Binder驱动模块;
Binder驱动模块创建该服务管理器的Binder_Proc结构;
服务管理器调用ioctl接口以将自身注册成为服务管理器所部属的安卓域内的唯一管理进程;
Binder驱动模块创建对应于该服务管理器的节点Node;
Binder驱动模块获取该服务管理器所在的命令空间,在关联表中保存该服务管理器所在的命令空间与该服务管理器的关联关系。
4.根据权利要求2所述的双系统终端的服务隔离方法,其特征在于,所述当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述映射表以确定出服务管理器,并将所述服务管理器返回给所述进程包括:
所述进程开启Binder驱动模块;
Binder驱动模块创建该进程的Binder_Proc结构,并获取该进程所在的命令空间;
当句柄值为零的BpBinder对象传输数据时,Binder驱动模块通过ioctl接口生成句柄值为零的引用项;
Binder驱动模块基于该进程所在的命令空间查询所述关联表以确定出服务管理器,将服务管理器的指针赋值给所述引用项,以为所述进程实现对所述服务管理器的引用。
5.根据权利要求1所述的双系统终端的服务隔离方法,其特征在于,
所述进程为服务端Service,且所述进程通过所述服务管理器的增加服务addService方法在所述服务管理器处注册;或
所述进程为客户端Client,且所述进程通过所述服务管理器的获取服务getService方法从所述服务管理器获取Service。
6.一种双系统终端的服务隔离装置,其特征在于,所述双系统包含两个安卓域,每个安卓域对应于各自的命令空间,每个安卓域部属有各自的服务管理器;该装置包括:
关联表生成模块,用于在Binder驱动模块中生成关联表,在所述关联表中保存有命令空间与该命令空间对应的安卓域中的服务管理器之间的关联关系;
返回模块,用于当Binder驱动模块从进程接收到服务管理器获取请求时,确定该进程所在的命令空间,基于所述命令空间查询所述关联表以确定出服务管理器,并将所述服务管理器返回给所述进程。
7.根据权利要求6所述的双系统终端的服务隔离装置,其特征在于,所述服务管理器获取请求包含句柄值为零的BpBinder对象。
8.根据权利要求6所述的双系统终端的服务隔离装置,其特征在于,
所述关联表生成模块,用于使能:服务管理器在初始化时开Binder驱动模块;Binder驱动模块创建该服务管理器的Binder_Proc结构;服务管理器调用ioctl接口以将自身注册成为服务管理器所部属的安卓域内的唯一管理进程;Binder驱动模块创建对应于该服务管理器的节点Node;Binder驱动模块获取该服务管理器所在的命令空间,在关联表中保存该服务管理器所在的命令空间与该服务管理器的关联关系。
9.根据权利要求7所述的双系统终端的服务隔离装置,其特征在于,
所述返回模块,用于使能:所述进程开启Binder驱动模块;Binder驱动模块创建该进程的Binder_Proc结构,并获取该进程所在的命令空间;当句柄值为零的BpBinder对象传输数据时,Binder驱动模块通过ioctl接口生成句柄值为零的引用项;Binder驱动模块基于该进程所在的命令空间查询所述关联表以确定出服务管理器,将服务管理器的指针赋值给所述引用项,以为所述进程实现对所述服务管理器的引用。
10.根据权利要求6所述的双系统终端的服务隔离装置,其特征在于,
所述进程为服务端Service,该装置包括服务注册模块,用于使能所述进程通过所述服务管理器的增加服务addService方法在所述服务管理器处注册;或
所述进程为客户端Client,该装置包括服务获取模块,用于使能所述进程通过所述服务管理器的获取服务getService方法从所述服务管理器获取Service。
11.一种双系统终端的服务隔离装置,其特征在于,包括处理器和存储器;
所述存储器中存储有可被所述处理器执行的应用程序,用于使得所述处理器执行如权利要求1至5中任一项所述的双系统终端的服务隔离方法。
12.一种计算机可读存储介质,其特征在于,其中存储有计算机可读指令,该计算机可读指令用于执行如权利要求1至5中任一项所述的双系统终端的服务隔离方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910500130.4A CN112073448B (zh) | 2019-06-11 | 2019-06-11 | 一种双系统终端的服务隔离方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910500130.4A CN112073448B (zh) | 2019-06-11 | 2019-06-11 | 一种双系统终端的服务隔离方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112073448A true CN112073448A (zh) | 2020-12-11 |
CN112073448B CN112073448B (zh) | 2022-10-11 |
Family
ID=73658355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910500130.4A Active CN112073448B (zh) | 2019-06-11 | 2019-06-11 | 一种双系统终端的服务隔离方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112073448B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783675A (zh) * | 2021-01-29 | 2021-05-11 | 中汽创智科技有限公司 | Ipc通信方法 |
CN113590365A (zh) * | 2021-10-08 | 2021-11-02 | 北京海誉动想科技股份有限公司 | 跨进程通信方法与Binder驱动 |
CN113821360A (zh) * | 2021-07-12 | 2021-12-21 | 北京鲸鲮信息系统技术有限公司 | 定位信息的获取方法、装置、电子设备及存储介质 |
CN113934464A (zh) * | 2021-12-14 | 2022-01-14 | 北京鲸鲮信息系统技术有限公司 | Linux系统中启动安卓应用的方法、装置和电子设备 |
CN115509767A (zh) * | 2021-06-23 | 2022-12-23 | 华为技术有限公司 | 一种服务进程的调用方法及相关装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101355801A (zh) * | 2008-09-12 | 2009-01-28 | 信息产业部电信传输研究所 | 支持多模终端跨系统驻留和切换的方法 |
CN103593225A (zh) * | 2013-10-30 | 2014-02-19 | 浙江大学 | 移动虚拟化场景中多Android系统复用Binder IPC机制的方法 |
US20140242945A1 (en) * | 2011-11-15 | 2014-08-28 | Beijing Netqin Technology Co., Ltd. | Method and system for monitoring application program of mobile device |
CN105357256A (zh) * | 2015-09-28 | 2016-02-24 | 深信服网络科技(深圳)有限公司 | 管理移动设备的方法及服务器 |
CN106375371A (zh) * | 2016-08-22 | 2017-02-01 | 四川安嵌科技有限公司 | 一种跨域访问服务的方法及系统 |
CN108304248A (zh) * | 2017-12-19 | 2018-07-20 | 西安电子科技大学 | 一种多系统虚拟化的移动设备 |
-
2019
- 2019-06-11 CN CN201910500130.4A patent/CN112073448B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101355801A (zh) * | 2008-09-12 | 2009-01-28 | 信息产业部电信传输研究所 | 支持多模终端跨系统驻留和切换的方法 |
US20140242945A1 (en) * | 2011-11-15 | 2014-08-28 | Beijing Netqin Technology Co., Ltd. | Method and system for monitoring application program of mobile device |
CN103593225A (zh) * | 2013-10-30 | 2014-02-19 | 浙江大学 | 移动虚拟化场景中多Android系统复用Binder IPC机制的方法 |
CN105357256A (zh) * | 2015-09-28 | 2016-02-24 | 深信服网络科技(深圳)有限公司 | 管理移动设备的方法及服务器 |
CN106375371A (zh) * | 2016-08-22 | 2017-02-01 | 四川安嵌科技有限公司 | 一种跨域访问服务的方法及系统 |
CN108304248A (zh) * | 2017-12-19 | 2018-07-20 | 西安电子科技大学 | 一种多系统虚拟化的移动设备 |
Non-Patent Citations (1)
Title |
---|
武琼: ""基于多容器技术的多OS的研究与实现"", 《中国优秀硕士论文全文数据库》 * |
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 | 华为技术有限公司 | 一种服务进程的调用方法及相关装置 |
CN113821360A (zh) * | 2021-07-12 | 2021-12-21 | 北京鲸鲮信息系统技术有限公司 | 定位信息的获取方法、装置、电子设备及存储介质 |
CN113590365A (zh) * | 2021-10-08 | 2021-11-02 | 北京海誉动想科技股份有限公司 | 跨进程通信方法与Binder驱动 |
CN113934464A (zh) * | 2021-12-14 | 2022-01-14 | 北京鲸鲮信息系统技术有限公司 | Linux系统中启动安卓应用的方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112073448B (zh) | 2022-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112073448B (zh) | 一种双系统终端的服务隔离方法和装置 | |
US6189046B1 (en) | Mechanism and method for merging cached location information in a distributed object environment | |
US6205466B1 (en) | Infrastructure for an open digital services marketplace | |
US11716264B2 (en) | In situ triggered function as a service within a service mesh | |
US6282581B1 (en) | Mechanism for resource allocation and for dispatching incoming calls in a distributed object environment | |
CN106663033B (zh) | 在事务中间件机器环境支持绕域和代理模型并更新服务信息以跨域消息传送的系统和方法 | |
US7650609B2 (en) | Multi-environment document management system access | |
CN112068968B (zh) | 一种双系统终端的服务访问方法和装置 | |
US10678657B1 (en) | Reversion operations for virtual computing environments | |
CN115269184A (zh) | 函数即服务(faas)执行分配器 | |
CN110659100B (zh) | 容器管理方法、装置和设备 | |
US10728169B1 (en) | Instance upgrade migration | |
US20070011274A1 (en) | Data transfer in a multi-environment document management system access | |
US11030077B1 (en) | Framework for testing and validating content generated by applications | |
CN110532106B (zh) | 进程间的通讯方法、装置、设备和存储介质 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN115086166A (zh) | 计算系统、容器网络配置方法及存储介质 | |
CN110798504B (zh) | 跨区域共享服务的方法、装置、管理设备及存储介质 | |
US9086939B2 (en) | Reactivation of a software image from a source machine onto a target machine | |
CN113992759B (zh) | 应用于局域网的联合解析装置、方法及电子设备 | |
CN114285859A (zh) | 中间层区块链服务的数据处理方法、装置、设备及存储介质 | |
CN111026564A (zh) | 命名服务的处理方法和系统 | |
US8880702B2 (en) | Provision of other than 1:1 resource mapping | |
CN111459613B (zh) | 动态扩展开发环境的方法及装置 | |
CN117724857A (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 |