CN116149820B - 基于Xen的域间通信方法、装置、设备及存储介质 - Google Patents

基于Xen的域间通信方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN116149820B
CN116149820B CN202310149218.2A CN202310149218A CN116149820B CN 116149820 B CN116149820 B CN 116149820B CN 202310149218 A CN202310149218 A CN 202310149218A CN 116149820 B CN116149820 B CN 116149820B
Authority
CN
China
Prior art keywords
domain
shared memory
interrupt request
virtual machine
application program
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.)
Active
Application number
CN202310149218.2A
Other languages
English (en)
Other versions
CN116149820A (zh
Inventor
陈帅东
张宏伟
刘亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ecarx Hubei Tech Co Ltd
Original Assignee
Ecarx Hubei Tech Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ecarx Hubei Tech Co Ltd filed Critical Ecarx Hubei Tech Co Ltd
Priority to CN202310149218.2A priority Critical patent/CN116149820B/zh
Publication of CN116149820A publication Critical patent/CN116149820A/zh
Application granted granted Critical
Publication of CN116149820B publication Critical patent/CN116149820B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种基于Xen的域间通信方法、装置、设备及存储介质,当运行于特权域虚拟机中的第一应用程序向运行于客户域第一虚拟机中的第二应用程序发起中断请求时,字符内核模块被触发以向共享内存客户模块发送中断请求,共享内存客户模块向第一模拟器进程发送该中断请求,第一模拟器进程通过Xen向第二应用程序发送中断请求,第二应用程序响应中断请求以从共享内存空间获得共享数据,无需依赖Xen本身的授权表和域间共享存储系统即可实现特权域虚拟机与客户域第一虚拟机之间的高效通信,以满足车机嵌入式虚拟化场景中各域间简洁又高效的域间通信需求。

Description

基于Xen的域间通信方法、装置、设备及存储介质
技术领域
本申请涉及通信技术领域,尤其涉及一种基于Xen的域间通信方法、装置、设备及存储介质。
背景技术
随着整车架构走向电气化、智能化,车辆对于计算硬件的性能有了更高要求,例如从之前MCU(Microcontroller Unit,微控制单元)域的控制器逐渐转变到了强计算力的中央核心车机Soc(System on Chip系统级芯片)。然而,Soc上可能存在诸多异构核心(Asymmetric multi-process,AMP),每个核心上可能需要运行不同的OS(OperatingSystem,操作系统),或者不同的车机功能存在于不同的独立OS中却需在统一的资源上运行不同的OS,这便要求系统软件底层提供一个Hypervisor(又称virtual machine monitor,虚拟机监视器)来承载不同OS协同而又独立的运行。
Xen作为一款经典的虚拟机监控机,在虚拟化场景中扮演重要的角色,已被运用于构建很多内部云计算或业务系统中,具有功能强大,组件丰富等特点。但也正是由于Xen的庞大导致了其软件层的复杂,在车机虚拟化场景中,无疑在增添了诸多不必要功能的同时还引入了不确定性的复杂度。
目前在Xen上,社区主流的域间通信方案基于Xen官方的grantable(授权表)和XenStore(域间共享存储系统)等机制实现,但是这种机制也正是造成Xen复杂繁琐的原因之一,特别针对车机嵌入式虚拟化场景而言这种解决方案过于繁冗。
发明内容
本申请提供一种基于Xen的域间通信方法、装置、设备及存储介质,用于解决现有技术中基于Xen实现车机嵌入式虚拟化场景中的域间通信过于繁冗的技术问题。
第一方面,本申请提供一种基于Xen的域间通信方法,包括:
当第一应用程序向第二应用程序发起中断请求时,字符内核模块被触发以向共享内存客户模块发送所述中断请求,所述第一应用程序运行于特权域虚拟机,所述第二应用程序运行于客户域第一虚拟机;
所述共享内存客户模块向第一模拟器进程发送所述中断请求;
所述第一模拟器进程通过所述Xen向所述第二应用程序发送所述中断请求,使得所述第二应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述字符内核模块和所述共享内存客户模块配置于所述特权域虚拟机。
第二方面,本申请提供一种基于Xen的域间通信方法,包括:
当第二应用程序向所述第一应用程序发起中断请求时,所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,所述第一应用程序运行于特权域虚拟机,所述第二应用程序运行于客户域第一虚拟机;
所述第一模拟器进程响应所述陷入指令向共享内存客户模块发送中断请求;
所述共享内存客户模块向字符内核模块发送所述中断请求,所述字符内核模块发送所述中断请求至所述第一应用程序,使得所述第一应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述字符内核模块和所述共享内存客户模块配置于所述特权域虚拟机。
第三方面,本申请提供一种基于Xen的域间通信方法,包括:
当第二应用程序向第三应用程序发起中断请求时,所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,所述第二应用程序运行于客户域第一虚拟机,所述第三应用程序运行于客户域第二虚拟机;
所述第一模拟器进程响应所述陷入指令向共享内存客户模块发送中断请求;
所述共享内存客户模块向第二模拟器进程发送所述中断请求;
所述第二模拟器进程通过所述Xen向所述第三应用程序发送所述中断请求,使得所述第三应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述共享内存客户模块配置于特权域虚拟机。
第四方面,本申请提供一种基于Xen的域间通信装置,包括:
第一处理模块,用于当第一应用程序向第二应用程序发起中断请求时,字符内核模块被触发以向共享内存客户模块发送所述中断请求,所述第一应用程序运行于特权域虚拟机,所述第二应用程序运行于客户域第一虚拟机;
第二处理模块,用于所述共享内存客户模块向第一模拟器进程发送所述中断请求;
第三处理模块,用于所述第一模拟器进程通过所述Xen向所述第二应用程序发送所述中断请求,使得所述第二应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述字符内核模块和所述共享内存客户模块配置于所述特权域虚拟机。
第五方面,本申请提供一种基于Xen的域间通信装置,包括:
第一处理模块,用于当第二应用程序向所述第一应用程序发起中断请求时,所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,所述第一应用程序运行于特权域虚拟机,所述第二应用程序运行于客户域第一虚拟机;
第二处理模块,用于所述第一模拟器进程响应所述陷入指令向共享内存客户模块发送所述中断请求;
第三处理模块,用于所述共享内存客户模块向字符内核模块发送所述中断请求,所述字符内核模块发送所述中断请求至所述第一应用程序,使得所述第一应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述字符内核模块和所述共享内存客户模块配置于所述特权域虚拟机。
第六方面,本申请提供一种基于Xen的域间通信装置,包括:
第一处理模块,用于当第二应用程序向第三应用程序发起中断请求时,所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,所述第二应用程序运行于客户域第一虚拟机,所述第三应用程序运行于客户域第二虚拟机;
第二处理模块,用于所述第一模拟器进程响应所述陷入指令向共享内存客户模块发送所述中断请求;
第三处理模块,用于所述共享内存客户模块向第二模拟器进程发送所述中断请求;
第四处理模块,用于所述第二模拟器进程通过所述Xen向所述第三应用程序发送所述中断请求,使得所述第三应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述共享内存客户模块配置于特权域虚拟机。
第七方面,本申请提供一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现第一方面所涉及的方法,或者第二方面所涉及的方法,或者第三方面所涉及的方法。
第八方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面所涉及的方法,或者第二方面所涉及的方法,或者第三方面所涉及的方法。
本申请提供一种基于Xen的域间通信方法、装置、设备及存储介质,当运行于特权域虚拟机中的第一应用程序向运行于客户域第一虚拟机中的第二应用程序发起中断请求时,字符内核模块被触发以向共享内存客户模块发送中断请求,共享内存客户模块向第一模拟器进程发送该中断请求,第一模拟器进程通过Xen向第二应用程序发送中断请求,使得第二应用程序响应中断请求以从共享内存空间获得共享数据,无需依赖Xen本身的授权表和域间共享存储系统即可实现特权域虚拟机与客户域第一虚拟机之间的高效通信,以满足车机嵌入式虚拟化场景中各域间简洁又高效的域间通信需求。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种系统架构示意图;
图2为本申请实施例提供的一种基于Xen的域间通信方法的流程示意图;
图3为本申请实施例提供的另一种基于Xen的域间通信方法的流程示意图;
图4为本申请实施例提供的再一种基于Xen的域间通信方法的流程示意图;
图5为本申请实施例提供的又一种基于Xen的域间通信方法的流程示意图;
图6为本申请实施例提供的又一种基于Xen的域间通信方法的流程示意图;
图7为本申请实施例提供的又一种基于Xen的域间通信方法的流程示意图;
图8为本申请实施例提供的一种基于Xen的域间通信装置的结构示意图;
图9为本申请实施例提供的另一种基于Xen的域间通信装置的结构示意图;
图10为本申请实施例提供的再一种基于Xen的域间通信装置的结构示意图;
图11为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的方法和装置的例。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
Xen作为一款经典的虚拟机监控机,在虚拟化场景中扮演重要的角色,并且已被运用于构建很多内部云计算或业务系统中,具有功能强大,组件丰富等特点。但也正是由于Xen的庞大导致了其软件层的复杂,在车机虚拟化场景中,无疑在增添了诸多不必要功能的同时还引入了不确定性的复杂度。目前在Xen上,社区主流的域间通信方案基于Xen官方的授权表和域间共享存储系统等机制实现,但是这种机制也正是造成Xen复杂繁琐的原因之一,特别针对车机嵌入式虚拟化场景而言这种解决方案过于繁冗。
针对现有技术中存在的上述问题,本申请提供一种基于Xen的域间通信方法、装置、设备及存储介质。本申请提供的基于Xen的域间通信方法的发明构思在于:特权域虚拟机配置有字符内核模块,当特权域虚拟机中的第一应用程序向客户域第一虚拟机中的第二应用程序发起中断请求时,字符内核模块被触发,从而向共享内存客户模块发送中断请求,共享内存客户模块与第一模拟器进程通信,从而共享内存客户模块可以将中断请求发送给第一模拟器进程,而第一模拟器进程为客户域第一虚拟机中第二应用程序对应进程,进而第一模拟器进程可以将终端请求基于Xen发送给第二应用程序,以供第二应用程序响应中断请求,从而完成特权域虚拟机与客户域第一虚拟机之间通信。无需依赖Xen本身繁冗而复杂的授权表机制,可以剔除与场景需求不符合的不确定性复杂因素,进而削减Xen base代码,以及可以为上层用户提供更为简洁的使用接口。为车机嵌入式虚拟化场景中各域间通信提供简洁又高效的解决方案。
图1为本申请实施例提供的一种系统架构示意图。如图1所示,特权域虚拟机(如图1中的dom0)配置有字符内核模块101、共享内存客户(Ivshme-client)模块102。其中,字符内核模块101用于特权域虚拟机中运行的第一应用程序(如图1中的APP1)与共享内存客户模块102之间的通信。特权域虚拟机可以例如运行车机中控屏的操作系统,第一应用程序则可以为车机中控屏中运行的任意应用程序。共享内存客户模块102用于在特权域虚拟机中通过第一模拟器进程103(比如Qemu Ivshme-doorbell device)与其他客户域第一虚拟机(如图1中的domU)进行通信,而第一模拟器进程103通过Xen可以为客户域第一虚拟机中运行的第二应用程序(如图1中的APP2)的进程,故而进一步通过第一模拟器进程103即可实现特权域虚拟机中的第一应用程序与客户域第一虚拟机中的第二应用程序之间的通信,也即实现特权域虚拟机与客户域第一虚拟机之间的域间通信。其中,Xen为开放源代码虚拟机监视机(Hypervisor),是一个直接运行在计算机硬件之上的用以替代操作系统的软件层,它能够在计算机硬件上并发的运行多个操作系统。
可以理解的是,客户域第一虚拟机中运行的操作系统与特权域虚拟机中运行的操作系统不同,例如特权域虚拟机中运行的中控屏的操作系统为安卓,客户域第一虚拟机中运行的仪表系统为不同于安卓的操作系统。需要说明的是,本申请实施例对于特权域虚拟机和客户域第一虚拟机各自运行的操作系统不作限定,上述描述仅为示意性举例说明。
进一步地,特权域虚拟机还配置了共享内存服务(Ivshmem-server)模块104。共享内存服务模块104用于在特权域虚拟机上创建共享内存空间105,共享内存空间对于特权域虚拟机和客户域第一虚拟机均可见,换言之,共享内存空间向特权域虚拟机和客户域第一虚拟机均开放,特权域虚拟机和客户域第一虚拟机都可以直接读写共享内存空间105以将共享数据写入至该共享内存空间105。从而通过本申请实施例提供的基于Xen的域间通信,使得特权域虚拟机中的第一应用程序可以将中断请求发送到客户域第一虚拟机的第二应用程序,以通知到第二应用程序从共享内存空间获取共享数据。
另外,共享内存服务模块104与共享内存客户模块102通过socket接口连接,使得两者实现通信。第一模拟器进程103与共享内存服务模块104可通信。
可选地,在车机嵌入式虚拟化场景中,客户域的虚拟机并非只有客户域第一虚拟机,例如,还可以有客户域第二虚拟机、客户域第三虚拟机等多个。在特权域虚拟机与客户域第一虚拟机之间实现通信的基础上,则还可以通过该特权域虚拟机实现客户域第一虚拟机与客户域第二虚拟机之间通信。例如经由图1中的dom0实现domU’与domU之间通信,domU’表示客户域第二虚拟机,APP3表示运行于客户域第二虚拟机中的第三应用程序,从而使得本申请实施例提供的基于Xen的域间通信方法,可以基于特权域虚拟机实现客户域虚拟机相互之间的通信。
第二模拟器进程106则与第一模拟器进程103相类似,共享内存客户模块102通过第二模拟器进程106(比如Qemu Ivshme-doorbell device)与其他客户域第二虚拟机(如图1中的domU’)进行通信,第二模拟器进程106通过Xen可以为客户域第二虚拟机中运行的第三应用程序(如图1中的APP3)的进程。第二模拟器进程106与共享内存服务模块104可通信。
需要说明的是,本申请实施例提供的基于Xen的域间通信方法的上述系统架构包括但不仅限于车机嵌入式虚拟场景,可以为其他嵌入式虚拟场景,对此本申请实施例不作限定。
图2为本申请实施例提供的一种基于Xen的域间通信方法的流程示意图,本申请实施例提供的基于Xen的域间通信方法应用于如图1所示的特权域虚拟机的第一应用程序向客户域第一虚拟机的第二应用程序发起中断请求时。
如图2所示,本申请实施例提供的基于Xen的域间通信方法,包括:
S101:字符内核模块被触发以向共享内存客户模块发送中断请求。
字符内核模块配置于特权域虚拟机,第一应用程序运行于特权域虚拟机,第二应用程序运行于客户域第一虚拟机。当特权域虚拟机的第一应用程序欲向客户域第一虚拟机的第二应用程序发送中断请求时,字符内核模块被触发,字符内核模块向共享内存客户模块发送中断请求。共享内存客户模块配置于特权域虚拟机。
可以理解的是,中断请求可以发起第一应用程序采用中断机制向客户域第一虚拟机中第二应用程序发送通知。
S102:共享内存客户模块向第一模拟器进程发送中断请求。
共享内存客户模块接收到中断请求后,将中断请求发送给第一模拟器进程。
S103:第一模拟器进程通过Xen向第二应用程序发送中断请求。
S104:第二应用程序响应中断请求以从共享内存空间获得共享数据。
第一模拟器进程基于Xen可以是客户域第一虚拟机中运行的任意应用程序的对应进程,第二应用程序为运行于客户域第一虚拟机的应用程序,因而第一模拟器进程可以基于Xen为客户域第一虚拟机中运行的第二应用程序的进程。
第一模拟器进程接收到中断请求后,第一模拟器进程基于Xen将中断请求发送给第二应用程序,第二应用程序接收到中断请求后,则对中断请求作出响应,从共享内存空间获取共享数据。
其中,共享内存空间由共享内存服务模块创建,特权域虚拟机和客户域第一虚拟机都可以直接读写共享内存空间以将共享数据写入至该共享内存空间,换言之,共享内存空间对特权域虚拟机和客户域第一虚拟机均开放。共享数据可以为特权域虚拟机和客户域第一虚拟机各自中运行的任意应用程序所产生的数据,本申请实施例对于共享数据的内容不作限定。
至此,中断请求由特权域虚拟机的第一应用程序发送到了客户域第一虚拟机的第二应用程序,也即第一应用程序采用中断机制通知到了第二应用程序,实现了特权域虚拟机与客户域第一虚拟机之间通信。通过上述实施例描述可见,特权域虚拟机与客户域第一虚拟机之间的通信过程未依赖Xen本身繁冗复杂的授权表机制,而是一种高效且简洁地基于Xen的共享内存的通信过程,从而极大地消减了Xen base的代码,简化了Xen本身的复杂性,提高了域间通信的高效性,并且可以为上层用户提供更为简洁的应用接口。
本申请实施例提供的基于Xen的域间通信方法,当运行于特权域虚拟机中的第一应用程序向运行于客户域第一虚拟机中的第二应用程序发起中断请求时,字符内核模块被触发以向共享内存客户模块发送中断请求,共享内存客户模块向第一模拟器进程发送该中断请求,第一模拟器进程通过Xen向第二应用程序发送中断请求,使得第二应用程序响应中断请求以从共享内存空间获得共享数据,无需依赖Xen本身的授权表和域间共享存储系统即可实现特权域虚拟机至客户域第一虚拟机之间的高效通信,以满足车机嵌入式虚拟化场景中特权域至客户域简洁又高效的域间通信需求。
在图2基础上,图3为本申请实施例提供的另一种基于Xen的域间通信方法的流程示意图。本申请实施例提供的基于Xen的域间通信方法应用于如图1所示的特权域虚拟机的第一应用程序向客户域第一虚拟机的第二应用程序发起中断请求时。如图3所示,本申请实施例提供的基于Xen的域间通信方法,包括:
S201:字符内核模块通过ioctl函数被触发,以向共享内存客户模块发送中断请求。
当特权域虚拟机的第一应用程序欲向客户域第一虚拟机的第二应用程序发送中断请求时,第一应用程序向字符内核模块发送ioctl函数,字符内核模块被触发,进而字符内核模块以事件通知(Eventfd)向共享内存客户模块发送中断请求,以实现进程之间的事件通知。
S202:共享内存客户模块按照事件响应机制向第一模拟器进程发送中断请求。
第一模拟器进程可以基于Xen为客户域第一虚拟机中运行的第二应用程序的进程,共享内存客户模块接收到中断请求后,通过第一模拟器进程的事件响应机制(EventNotifier)向第一模拟器进程发送中断请求。
S203:第一模拟器进程通过Xen向第一设备驱动程序注入中断请求。
S204:第一设备驱动程序发送中断请求至第一共享内存驱动程序。
S205:第一共享内存驱动程序发送中断请求至第二应用程序。
如图1所示,客户域第一虚拟机配置有第一设备驱动程序(PCI device driver)107和第一共享内存驱动程序(Ivshmem driver)108,第一设备驱动程序107和第一共享内存驱动程序设备108驱动通信连接。如图1所示,第一模拟器进程接收到中断请求后,通过Xen向第一设备驱动程序注入中断请求,进而第一设备驱动程序发送中断请求至第一共享内存驱动程序,第一共享内存驱动程序再发送中断请求至第二应用程序,至此中断请求由特权域虚拟机的第一应用程序发送到了客户域第一虚拟机的第二应用程序。
S206:第二应用程序响应中断请求以从共享内存空间获得共享数据。
第二应用程序接收到中断请求后,则对中断请求作出响应,从共享内存空间获取共享数据。
本申请实施例提供的基于Xen的域间通信方法,当运行于特权域虚拟机中的第一应用程序向运行于客户域第一虚拟机中的第二应用程序发起中断请求时,字符内核模块通过ioctl函数被触发以向共享内存客户模块发送中断请求,共享内存客户模块按照事件响应机制向第一模拟器进程发送该中断请求,第一模拟器进程通过Xen向第一设备驱动程序注入中断请求,第一设备驱动程序再将中断请求发送给第一共享内存驱动设备,第一共享内存驱动设备再发送中断请求给第二应用程序,使得第二应用程序响应中断请求以从共享内存空间获得共享数据,无需依赖Xen本身的授权表和域间共享存储系统即可实现特权域虚拟机与客户域第一虚拟机之间的高效通信,满足车机嵌入式虚拟化场景中特权域至客户域的简洁又高效的域间通信需求。
图4为本申请实施例提供的再一种基于Xen的域间通信方法的流程示意图。本申请实施例提供的基于Xen的域间通信方法应用于如图1所示的客户域第一虚拟机的第二应用程序向特权域虚拟机的第一应用程序发起中断请求时。如图4所示,本申请实施例提供的基于Xen的域间通信方法,包括:
S301:第二应用程序通过Xen向第一模拟器进程发送陷入指令。
当客户域第一虚拟机的第二应用程序向特权域虚拟机的第一应用程序发起中断请求时,第二应用程序通过Xen向第一模拟器进程发送陷入指令。
陷入指令用于实现在用户态下运行的进程例如第二应用程序调用操作系统内核程序,即当运行的第二应用程序欲请求操作系统内核比如dom0为其服务时,可以安排执行一条陷入指令引起一次特殊异常。
S302:第一模拟器进程响应陷入指令向共享内存客户模块发送中断请求。
第一模拟器进程则响应该陷入指令,向共享内存客户模块发送中断请求,本实施例中的中断请求用于发起第二应用程序采用中断机制向特权域虚拟机中第一应用程序发送通知。
S303:共享内存客户模块向字符内核模块发送中断请求。
共享内存客户模块接收到中断请求后,则将中断请求发送给字符内核模块。共享内存客户模块和字符内核模块配置于特权域虚拟机。
S304:字符内核模块发送中断请求至第一应用程序。
字符内核模块接收到中断请求后,发送中断请求至第一应用程序,至此完成客户域第一虚拟机中的第二应用程序采用中断机制通知特权域虚拟机中第一应用程序的过程。
S305:第一应用程序响应中断请求以从共享内存空间获得共享数据。
第一应用程序运行于特权域虚拟机,其为第二应用程序想要通知的特权域虚拟机中的应用程序。第一应用程序接收到中断请求后,响应该中断请求,从共享内存空间获取共享数据。
其中,共享内存空间由共享内存服务模块创建,特权域虚拟机和客户域第一虚拟机都可以直接读写共享内存空间以将共享数据写入至该共享内存空间,换言之,共享内存空间对特权域虚拟机和客户域第一虚拟机均开放。共享数据可以为特权域虚拟机和客户域第一虚拟机各自中运行的任意应用程序所产生的数据,本申请实施例对于共享数据的内容不作限定。
本申请实施例提供的基于Xen的域间通信方法,当运行于客户域第一虚拟机的第二应用程序向运行于特权域虚拟机的第一应用程序发起中断请求时,第二应用程序通过Xen向第一模拟器进程发送陷入指令,第一模拟器进程响应陷入指令向共享内存客户模块发送中断请求,共享内存客户模块向字符内核模块发送中断请求,字符内核模块发送中断请求至第一应用程序,使得第一应用程序响应中断请求以从共享内存空间获得共享数据,无需依赖Xen本身的授权表和域间共享存储系统即可实现客户域第一虚拟机至特权域虚拟机之间的高效通信,以满足车机嵌入式虚拟化场景中客户域至特权域简洁又高效的域间通信需求。
在图4基础上,图5为本申请实施例提供的又一种基于Xen的域间通信方法的流程示意图。本申请实施例提供的基于Xen的域间通信方法应用于如图1所示的客户域第一虚拟机的第二应用程序向特权域虚拟机的第一应用程序发起中断请求时。如图5所示,本申请实施例提供的基于Xen的域间通信方法,包括:
S401:第一共享内存驱动程序发送第二应用程序发起的中断请求至第一设备驱动程序。
S402:第一设备驱动程序响应中断请求通过Xen向第一模拟器进程发送陷入指令。
客户域第一虚拟机配置有第一设备驱动程序和第一共享内存驱动程序,第一设备驱动程序和第一共享内存驱动程序设备驱动通信连接。当第二应用程序欲向第一应用程序发起中断请求时,第一共享内存驱动程序将第二应用程序发起的中断请求发送至第一设备驱动程序,进而第一设备驱动程序响应中断请求通过Xen向第一模拟器进程发送陷入指令,以通过陷入指令的方式向第一模拟器进程发起中断请求。
S403:第一模拟器进程响应陷入指令并按照事件响应机制向共享内存客户模块发送中断请求。
第一模拟器进程接收到陷入指令,则响应陷入指令,并以事件响应机制(EventNotifier)的方式向共享内存客户模块发送中断请求。
S404:共享内存客户模块通过ioctl函数向字符内核模块发送中断请求。
共享内存客户模块接收到中断请求后,通过ioctl函数触发字符内核模块,以向字符内核模块发送中断请求。字符内核模块配置于特权域虚拟机。
S405:字符内核模块发送中断请求至第一应用程序。
被触发的字符内核模块发送中断请求至第一应用程序,例如字符内核模块以唤醒函数(int_wakeup)发送中断请求至第一应用程序。至此完成客户域第一虚拟机中的第二应用程序采用中断机制通知特权域虚拟机中第一应用程序的过程。
S406:第一应用程序响应中断请求以从共享内存空间获得共享数据。
第一应用程序接收到中断请求后,响应该中断请求,从共享内存空间获取共享数据。
其中,共享内存空间由共享内存服务模块创建,特权域虚拟机和客户域第一虚拟机都可以直接读写共享内存空间以将共享数据写入至该共享内存空间,换言之,共享内存空间对特权域虚拟机和客户域第一虚拟机均开放。共享数据可以为特权域虚拟机和客户域第一虚拟机各自中运行的任意应用程序所产生的数据,本申请实施例对于共享数据的内容不作限定。
本申请实施例提供的基于Xen的域间通信方法,当运行于客户域第一虚拟机的第二应用程序向运行于特权域虚拟机的第一应用程序发起中断请求时,第一共享内存驱动程序将第二应用程序发起的中断请求发送至第一设备驱动程序,第一设备驱动程序响应中断请求通过Xen向第一模拟器进程发送陷入指令,通过陷入指令的方式向第一模拟器进程发起中断请求,第一模拟器进程响应陷入指令并按照事件响应机制向共享内存客户模块发送中断请求,共享内存客户模块以ioctl函数触发字符内核模块以向字符内核模块发送中断请求,被触发的字符内核模块发送中断请求至第一应用程序,使得第一应用程序响应中断请求以从共享内存空间获得共享数据,无需依赖Xen本身的授权表和域间共享存储系统即可实现客户域第一虚拟机至特权域虚拟机之间的高效通信,以满足车机嵌入式虚拟化场景中客户域至特权域简洁又高效的域间通信需求。
图6为本申请实施例提供的又一种基于Xen的域间通信方法的流程示意图。本申请实施例提供的基于Xen的域间通信方法应用于如图1所示的客户域第一虚拟机的第二应用程序向客户域第二虚拟机的第三应用程序发起中断请求时。如图6所示,本申请实施例提供的基于Xen的域间通信方法,包括:
S501:第二应用程序通过Xen向第一模拟器进程发送陷入指令。
当客户域第一虚拟机的第二应用程序向客户域第二虚拟机的第三应用程序发起中断请求时,第二应用程序通过Xen向第一模拟器进程发送陷入指令。第三应用程序运行于客户域第二虚拟机。
S502:第一模拟器进程响应陷入指令向共享内存客户模块发送中断请求。
第一模拟器进程则响应该陷入指令,向共享内存客户模块发送中断请求,本实施例中的中断请求用于发起第二应用程序采用中断机制向客户域第二虚拟机中第三应用程序发送通知。共享内存客户模块配置于特权域虚拟机。
S503:共享内存客户模块向第二模拟器进程发送中断请求。
第二模拟器进程基于Xen可以是客户域第二虚拟机中运行的任意应用程序的对应进程,第三应用程序为运行于客户域第二虚拟机的应用程序,因而第二模拟器进程可以基于Xen为客户域第二虚拟机中运行的第三应用程序的进程。
共享内存客户模块接收到中断请求后,则向第二模拟器进程发送中断请求,以通过第二模拟器进程发送中断请求至第三应用程序。
S504:第二模拟器进程通过Xen向第三应用程序发送中断请求。
第二模拟器进程接收到中断请求后,第二模拟器进程基于Xen将中断请求发送给第三应用程序。
S505:第三应用程序响应中断请求以从共享内存空间获得共享数据
第三应用程序接收到中断请求后,则对中断请求作出响应,从共享内存空间获取共享数据。
其中,共享内存空间由共享内存服务模块创建,特权域虚拟机、客户域第一虚拟机以及客户域第二虚拟机都可以直接读写共享内存空间以将共享数据写入至该共享内存空间,换言之,共享内存空间对特权域虚拟机和客户域第一虚拟机以及客户域第二虚拟机均开放。共享数据可以为特权域虚拟机和客户域第一虚拟机以及客户域第二虚拟机各自中运行的任意应用程序所产生的数据,本申请实施例对于共享数据的内容不作限定。
本申请实施例提供的基于Xen的域间通信方法,当运行于客户域第一虚拟机的第二应用程序向运行于客户域第二虚拟机的第三应用程序发起中断请求时,第二应用程序通过Xen向第一模拟器进程发送陷入指令,第一模拟器进程响应陷入指令向共享内存客户模块发送中断请求,共享内存客户模块向第二模拟器进程发送中断请求,第二模拟器进程通过Xen向第三应用程序发送中断请求,使得第三应用程序响应中断请求从共享内存空间获得共享数据,无需依赖Xen本身的授权表和域间共享存储系统即可基于特权域虚拟机实现客户域第一虚拟机至客户域第二虚拟机之间的高效通信,以满足车机嵌入式虚拟化场景中客户域至客户域相互之间简洁又高效的域间通信需求。
在图6基础上,图7为本申请实施例提供的又一种基于Xen的域间通信方法的流程示意图。本申请实施例提供的基于Xen的域间通信方法应用于如图1所示的客户域第一虚拟机的第二应用程序向客户域第二虚拟机的第三应用程序发起中断请求时。如图7所示,本申请实施例提供的基于Xen的域间通信方法,包括:
S601:第一共享内存驱动程序发送第二应用程序发起的中断请求至第一设备驱动程序。
S602:第一设备驱动程序响应中断请求通过Xen向第一模拟器进程发送陷入指令。
如图1所示,客户域第一虚拟机配置有第一设备驱动程序107和第一共享内存驱动程序108,第一设备驱动程序107和第一共享内存驱动程序设备驱动108通信连接。
当第二应用程序欲向第三应用程序发起中断请求时,第一共享内存驱动程序将第二应用程序发起的中断请求发送至第一设备驱动程序,进而第一设备驱动程序响应中断请求通过Xen向第一模拟器进程发送陷入指令,以通过陷入指令的方式向第一模拟器进程发起中断请求。陷入指令用于实现在用户态下运行的进程例如第二应用程序调用操作系统内核程序,即当运行的第二应用程序欲请求操作系统内核比如dom0为其服务时,可以安排执行一条陷入指令引起一次特殊异常。
S603:第一模拟器进程响应陷入指令并按照事件响应机制向共享内存客户模块发送中断请求。
第一模拟器进程接收到陷入指令,则响应陷入指令,并以事件响应机制(EventNotifier)的方式向共享内存客户模块发送中断请求。
S604:共享内存客户模块按照事件响应机制向第二模拟器进程发送中断请求。
第二模拟器进程可以基于Xen为客户域第二虚拟机中运行的第三应用程序的进程,共享内存客户模块接收到中断请求后,通过第二模拟器进程的事件响应机制(EventNotifier)向第二模拟器进程发送中断请求。
S605:第二模拟器进程通过Xen向第二设备驱动程序注入中断请求。
S606:第二设备驱动程序发送中断请求至第二共享内存驱动程序。
S607:第二共享内存驱动程序发送中断请求至第三应用程序。
如图1所示,客户域第二虚拟机配置有第二设备驱动程序(PCI device driver)109和第二共享内存驱动程序(Ivshmem driver)1010,第二设备驱动程序109和第二共享内存驱动程序1010通信连接。
如图1所示,第二模拟器进程接收到中断请求后,通过Xen向第二设备驱动程序注入中断请求,进而第二设备驱动程序发送中断请求至第二共享内存驱动程序,第二共享内存驱动程序再发送中断请求至第三应用程序,至此中断请求由客户域第一虚拟机的第二应用程序发送到了客户域第二虚拟机的第三应用程序。
S608:第三应用程序响应中断请求以从共享内存空间获得共享数据。
第三应用程序接收到中断请求后,则对中断请求作出响应,从共享内存空间获取共享数据。
其中,共享内存空间由共享内存服务模块创建,特权域虚拟机、客户域第一虚拟机以及客户域第二虚拟机都可以直接读写共享内存空间以将共享数据写入至该共享内存空间,换言之,共享内存空间对特权域虚拟机和客户域第一虚拟机以及客户域第二虚拟机均开放。共享数据可以为特权域虚拟机和客户域第一虚拟机以及客户域第二虚拟机各自中运行的任意应用程序所产生的数据,本申请实施例对于共享数据的内容不作限定。
本申请实施例提供的基于Xen的域间通信方法,当运行于客户域第一虚拟机的第二应用程序向运行于客户域第二虚拟机的第三应用程序发起中断请求时,第一共享内存驱动程序发送第二应用程序发起的中断请求至第一设备驱动程序,第一设备驱动程序响应中断请求通过Xen向第一模拟器进程发送陷入指令,第一模拟器进程响应陷入指令并按照事件响应机制向共享内存客户模块发送中断请求,共享内存客户模块按照事件响应机制向第二模拟器进程发送中断请求,第二模拟器进程通过Xen向第二设备驱动程序注入中断请求,第二设备驱动程序发送中断请求至第二共享内存驱动程序,第二共享内存驱动程序发送中断请求至第三应用程序,第三应用程序响应中断请求从共享内存空间获得共享数据,无需依赖Xen本身的授权表和域间共享存储系统即可基于特权域虚拟机实现客户域第一虚拟机至客户域第二虚拟机之间的高效通信,以满足车机嵌入式虚拟化场景中客户域至客户域相互之间简洁又高效的域间通信需求。
图8为本申请实施例提供的一种基于Xen的域间通信装置的结构示意图。如图8所示,本申请实施例提供的基于Xen的域间通信装置400,包括:
第一处理模块401,用于当第一应用程序向第二应用程序发起中断请求时,字符内核模块被触发以向共享内存客户模块发送中断请求,第一应用程序运行于特权域虚拟机,第二应用程序运行于客户域第一虚拟机;
第二处理模块402,用于共享内存客户模块向第一模拟器进程发送中断请求;
第三处理模块403,用于第一模拟器进程通过Xen向第二应用程序发送中断请求,使得第二应用程序响应中断请求以从共享内存空间获得共享数据;
其中,字符内核模块和共享内存客户模块配置于特权域虚拟机。
在一种可能的设计中,第一处理模块401,具体用于:
字符内核模块通过ioctl函数被触发,以向共享内存客户模块发送中断请求。
在一种可能的设计中,第二处理模块402,具体用于:
共享内存客户模块按照事件响应机制向第一模拟器进程发送中断请求。
在一种可能的设计中,特权域虚拟机还配置有共享内存服务模块,共享内存服务模块与共享内存客户模块通过socket接口连接;
共享内存服务模块用于生成共享内存空间,共享内存空间向特权域虚拟机和客户域第一虚拟机均开放。
在一种可能的设计中,客户域第一虚拟机配置有通信连接的第一设备驱动程序和第一共享内存驱动程序;第三处理模块401,具体用于:
第一模拟器进程通过Xen向第一设备驱动程序注入中断请求,第一设备驱动程序发送中断请求至第一共享内存驱动程序,使得第一共享内存驱动程序发送中断请求至第二应用程序。
本申请实施例提供的基于Xen的域间通信装置,可以执行上述方法实施例中当第一应用程序向第二应用程序发起中断请求时基于Xen的域间通信方法的相应步骤,其实现原理和技术效果类似,在此不再赘述。
图9为本申请实施例提供的另一种基于Xen的域间通信装置的结构示意图。如图9所示,本申请实施例提供的基于Xen的域间通信装置500,包括:
第一处理模块501,用于当第二应用程序向第一应用程序发起中断请求时,第二应用程序通过Xen向第一模拟器进程发送陷入指令,第一应用程序运行于特权域虚拟机,第二应用程序运行于客户域第一虚拟机;
第二处理模块502,用于第一模拟器进程响应陷入指令向共享内存客户模块发送中断请求;
第三处理模块503,用于共享内存客户模块向字符内核模块发送中断请求,字符内核模块发送中断请求至第一应用程序,使得第一应用程序响应中断请求以从共享内存空间获得共享数据;
其中,字符内核模块和共享内存客户模块配置于特权域虚拟机。
在一种可能的设计中,第三处理模块503,具体用于:
共享内存客户模块以ioctl函数向字符内核模块发送中断请求。
在一种可能的设计中,第二处理模块502,具体用于:
第一模拟器进程响应陷入指令并按照事件响应机制向共享内存客户模块发送中断请求。
在一种可能的设计中,特权域虚拟机还配置有共享内存服务模块,共享内存服务模块与共享内存客户模块通过socket接口连接;
共享内存服务模块用于生成共享内存空间,共享内存空间向特权域虚拟机和客户域第一虚拟机均开放。
在一种可能的设计中,客户域第一虚拟机配置有通信连接的第一设备驱动程序和第一共享内存驱动程序;第一处理模块501,具体用于:
第一共享内存驱动程序发送第二应用程序发起的中断请求至第一设备驱动程序;
第一设备驱动程序响应中断请求通过Xen向第一模拟器进程发送陷入指令。
本申请实施例提供的基于Xen的域间通信装置,可以执行上述方法实施例中当第二应用程序向第一应用程序发起中断请求时基于Xen的域间通信方法的相应步骤,其实现原理和技术效果类似,在此不再赘述。
图10为本申请实施例提供的再一种基于Xen的域间通信装置的结构示意图。如图10所示,本申请实施例提供的基于Xen的域间通信装置600,包括:
第一处理模块601,用于当第二应用程序向第三应用程序发起中断请求时,第二应用程序通过Xen向第一模拟器进程发送陷入指令,第二应用程序运行于客户域第一虚拟机,第三应用程序运行于客户域第二虚拟机;
第二处理模块602,用于第一模拟器进程响应陷入指令向共享内存客户模块发送中断请求;
第三处理模块603,用于共享内存客户模块向第二模拟器进程发送中断请求;
第四处理模块604,用于第二模拟器进程通过Xen向第三应用程序发送中断请求,使得第三应用程序响应中断请求以从共享内存空间获得共享数据;
其中,共享内存客户模块配置于特权域虚拟机。
在一种可能的设计中,第二处理模块602,具体用于:
第一模拟器进程响应陷入指令并按照事件响应机制向共享内存客户模块发送中断请求。
在一种可能的设计中,第三处理模块603,具体用于:
共享内存客户模块按照事件响应机制向第二模拟器进程发送中断请求。
在一种可能的设计中,客户域第一虚拟机配置有通信连接的第一设备驱动程序和第一共享内存驱动程序;第一处理模块601,具体用于:
第一共享内存驱动程序发送第二应用程序发起的中断请求至第一设备驱动程序;
第一设备驱动程序响应中断请求通过Xen向第一模拟器进程发送陷入指令。
在一种可能的设计中,客户域第二虚拟机配置有通信连接的第二设备驱动程序和第二共享内存驱动程序;第四处理模块604,具体用于:
第二模拟器进程通过Xen向第二设备驱动程序注入中断请求,第二设备驱动程序发送中断请求至第二共享内存驱动程序,使得第二共享内存驱动程序发送中断请求至第三应用程序。
在一种可能的设计中,特权域虚拟机还配置有共享内存服务模块,共享内存服务模块与共享内存客户模块通过socket接口连接;
共享内存服务模块用于生成共享内存空间,共享内存空间向特权域虚拟机、客户域第一虚拟机以及客户域第二虚拟机均开放。
本申请实施例提供的基于Xen的域间通信装置,可以执行上述方法实施例中当第二应用程序向第三应用程序发起中断请求时基于Xen的域间通信方法的相应步骤,其实现原理和技术效果类似,在此不再赘述。
图11为本申请实施例提供的一种电子设备的结构示意图。如图11所示,该电子设备700可以包括:处理器701,以及与处理器701通信连接的存储器702。
存储器702,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机执行指令。
存储器702可能包含高速RAM存储器,也可能还包括非易失性存储器(NoN-volatile memory),例如至少一个磁盘存储器。
处理器701用于执行存储器702存储的计算机执行指令,以实现上述实施例中方法中的各个步骤。
其中,处理器701可能是一个中央处理器(Central Processing Unit,简称为CPU),或者是特定集成电路(Application Specific Integrated Circuit,简称为ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路。
可选地,存储器702既可以是独立的,也可以跟处理器701集成在一起。当存储器702是独立于处理器701之外的器件时,电子设备700,还可以包括:
总线703,用于连接处理器701以及存储器702。总线可以是工业标准体系结构(industry standard architecture,简称为ISA)总线、外部设备互连(peripheralcomponent,PCI)总线或扩展工业标准体系结构(extended industry standardarchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器702和处理器701集成在一块芯片上实现,则存储器702和处理器701可以通过内部接口完成通信。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccessMemory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有计算机执行指令,计算机执行指令用于上述实施例中的方法中的各个步骤。
本申请还提供了一种计算机程序产品,包括计算机执行指令,该计算机指令被处理器执行时实现上述实施例中方法中的各个步骤。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (18)

1.一种基于Xen的域间通信方法,其特征在于,包括:
当第一应用程序向第二应用程序发起中断请求时,字符内核模块被触发以向共享内存客户模块发送所述中断请求,所述第一应用程序运行于特权域虚拟机,所述第二应用程序运行于客户域第一虚拟机;
所述共享内存客户模块向第一模拟器进程发送所述中断请求;其中,所述第一模拟器进程为所述客户域第一虚拟机中第二应用进程对应的进程;
所述第一模拟器进程通过所述Xen向所述第二应用程序发送所述中断请求,使得所述第二应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述字符内核模块和所述共享内存客户模块配置于所述特权域虚拟机。
2.根据权利要求1所述的域间通信方法,其特征在于,所述字符内核模块被触发以向共享内存客户模块发送所述中断请求,包括:
所述字符内核模块通过ioctl函数被触发,以向所述共享内存客户模块发送所述中断请求。
3.根据权利要求2所述的域间通信方法,其特征在于,所述共享内存客户模块向所述第一模拟器进程发送所述中断请求,包括:
所述共享内存客户模块按照事件响应机制向所述第一模拟器进程发送所述中断请求。
4.根据权利要求1-3任一项所述的域间通信方法,其特征在于,所述特权域虚拟机还配置有共享内存服务模块,所述共享内存服务模块与所述共享内存客户模块通过socket接口连接;
所述共享内存服务模块用于生成所述共享内存空间,所述共享内存空间向所述特权域虚拟机和所述客户域第一虚拟机均开放。
5.根据权利要求4所述的域间通信方法,其特征在于,所述客户域第一虚拟机配置有通信连接的第一设备驱动程序和第一共享内存驱动程序;
所述第一模拟器进程通过所述Xen向所述第二应用程序发送所述中断请求,包括:
所述第一模拟器进程通过所述Xen向所述第一设备驱动程序注入所述中断请求,所述第一设备驱动程序发送所述中断请求至所述第一共享内存驱动程序,使得所述第一共享内存驱动程序发送所述中断请求至所述第二应用程序。
6.一种基于Xen的域间通信方法,其特征在于,包括:
当第二应用程序向第一应用程序发起中断请求时,所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,所述第一应用程序运行于特权域虚拟机,所述第二应用程序运行于客户域第一虚拟机;其中,所述第一模拟器进程为所述客户域第一虚拟机中第二应用进程对应的进程;
所述第一模拟器进程响应所述陷入指令向共享内存客户模块发送中断请求;
所述共享内存客户模块向字符内核模块发送所述中断请求,所述字符内核模块发送所述中断请求至所述第一应用程序,使得所述第一应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述字符内核模块和所述共享内存客户模块配置于所述特权域虚拟机。
7.根据权利要求6所述的域间通信方法,其特征在于,所述共享内存客户模块向所述字符内核模块发送所述中断请求,包括:
所述共享内存客户模块以ioctl函数向所述字符内核模块发送所述中断请求。
8.根据权利要求6或7所述的域间通信方法,其特征在于,所述特权域虚拟机还配置有共享内存服务模块,所述共享内存服务模块与所述共享内存客户模块通过socket接口连接;
所述共享内存服务模块用于生成所述共享内存空间,所述共享内存空间向所述特权域虚拟机和所述客户域第一虚拟机均开放。
9.根据权利要求8所述的域间通信方法,其特征在于,所述客户域第一虚拟机配置有通信连接的第一设备驱动程序和第一共享内存驱动程序;
所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,包括:
所述第一共享内存驱动程序发送所述第二应用程序发起的所述中断请求至所述第一设备驱动程序;
所述第一设备驱动程序响应所述中断请求通过所述Xen向所述第一模拟器进程发送所述陷入指令。
10.一种基于Xen的域间通信方法,其特征在于,包括:
当第二应用程序向第三应用程序发起中断请求时,所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,所述第二应用程序运行于客户域第一虚拟机,所述第三应用程序运行于客户域第二虚拟机;其中,所述第一模拟器进程为所述客户域第一虚拟机中第二应用进程对应的进程;
所述第一模拟器进程响应所述陷入指令向共享内存客户模块发送中断请求;
所述共享内存客户模块向第二模拟器进程发送所述中断请求;其中,所述第二模拟器进程通过Xen为客户域第二虚拟机中运行的第三应用程序的进程;
所述第二模拟器进程通过所述Xen向所述第三应用程序发送所述中断请求,使得所述第三应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述共享内存客户模块配置于特权域虚拟机。
11.根据权利要求10所述的域间通信方法,其特征在于,所述客户域第一虚拟机配置有通信连接的第一设备驱动程序和第一共享内存驱动程序;
所述第二应用程序通过所述Xen向所述第一模拟器进程发送所述陷入指令,包括:
所述第一共享内存驱动程序发送所述第二应用程序发起的所述中断请求至所述第一设备驱动程序;
所述第一设备驱动程序响应所述中断请求通过所述Xen向所述第一模拟器进程发送所述陷入指令。
12.根据权利要求10所述的域间通信方法,其特征在于,所述客户域第二虚拟机配置有通信连接的第二设备驱动程序和第二共享内存驱动程序;
所述第二模拟器进程通过所述Xen向所述第三应用程序发送所述中断请求,包括:
所述第二模拟器进程通过所述Xen向所述第二设备驱动程序注入所述中断请求,所述第二设备驱动程序发送所述中断请求至所述第二共享内存驱动程序,使得所述第二共享内存驱动程序发送所述中断请求至所述第三应用程序。
13.根据权利要求10-12任一项所述的域间通信方法,其特征在于,所述特权域虚拟机还配置有共享内存服务模块,所述共享内存服务模块与所述共享内存客户模块通过socket接口连接;
所述共享内存服务模块用于生成所述共享内存空间,所述共享内存空间向所述特权域虚拟机、所述客户域第一虚拟机以及所述客户域第二虚拟机均开放。
14.一种基于Xen的域间通信装置,其特征在于,包括:
第一模块,用于当第一应用程序向第二应用程序发起中断请求时,字符内核模块被触发以向共享内存客户模块发送所述中断请求,所述第一应用程序运行于特权域虚拟机,所述第二应用程序运行于客户域第一虚拟机;
第二处理模块,用于所述共享内存客户模块向第一模拟器进程发送所述中断请求;其中,所述第一模拟器进程为所述客户域第一虚拟机中第二应用进程对应的进程;
第三处理模块,用于所述第一模拟器进程通过所述Xen向所述第二应用程序发送所述中断请求,使得所述第二应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述字符内核模块和所述共享内存客户模块配置于所述特权域虚拟机。
15.一种基于Xen的域间通信装置,其特征在于,包括:
第一处理模块,用于当第二应用程序向第一应用程序发起中断请求时,所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,所述第一应用程序运行于特权域虚拟机,所述第二应用程序运行于客户域第一虚拟机;其中,所述第一模拟器进程为所述客户域第一虚拟机中第二应用进程对应的进程;
第二处理模块,用于所述第一模拟器进程响应所述陷入指令向共享内存客户模块发送所述中断请求;
第三处理模块,用于所述共享内存客户模块向字符内核模块发送所述中断请求,所述字符内核模块发送所述中断请求至所述第一应用程序,使得所述第一应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述字符内核模块和所述共享内存客户模块配置于所述特权域虚拟机。
16.一种基于Xen的域间通信装置,其特征在于,包括:
第一处理模块,用于当第二应用程序向第三应用程序发起中断请求时,所述第二应用程序通过所述Xen向第一模拟器进程发送陷入指令,所述第二应用程序运行于客户域第一虚拟机,所述第三应用程序运行于客户域第二虚拟机;其中,所述第一模拟器进程为所述客户域第一虚拟机中第二应用进程对应的进程;
第二处理模块,用于所述第一模拟器进程响应所述陷入指令向共享内存客户模块发送所述中断请求;
第三处理模块,用于所述共享内存客户模块向第二模拟器进程发送所述中断请求;其中,所述第二模拟器进程通过Xen为客户域第二虚拟机中运行的第三应用程序的进程;
第四处理模块,用于所述第二模拟器进程通过所述Xen向所述第三应用程序发送所述中断请求,使得所述第三应用程序响应所述中断请求以从共享内存空间获得共享数据;
其中,所述共享内存客户模块配置于特权域虚拟机。
17.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-5任一项中,或者6-9任一项中,或者10-13任一项中所述的基于Xen的域间通信方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-5任一项中,或者6-9任一项中,或者10-13任一项中所述的基于Xen的域间通信方法。
CN202310149218.2A 2023-02-20 2023-02-20 基于Xen的域间通信方法、装置、设备及存储介质 Active CN116149820B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310149218.2A CN116149820B (zh) 2023-02-20 2023-02-20 基于Xen的域间通信方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310149218.2A CN116149820B (zh) 2023-02-20 2023-02-20 基于Xen的域间通信方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN116149820A CN116149820A (zh) 2023-05-23
CN116149820B true CN116149820B (zh) 2024-02-06

Family

ID=86350486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310149218.2A Active CN116149820B (zh) 2023-02-20 2023-02-20 基于Xen的域间通信方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN116149820B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
CN101859263A (zh) * 2010-06-12 2010-10-13 中国人民解放军国防科学技术大学 一种支持在线迁移的虚拟机间快速通信方法
CN101887393A (zh) * 2010-07-01 2010-11-17 中兴通讯股份有限公司 基于半虚拟化技术的设备故障复现方法及系统
US9507617B1 (en) * 2013-12-02 2016-11-29 Trend Micro Incorporated Inter-virtual machine communication using pseudo devices
CN106844008A (zh) * 2017-01-03 2017-06-13 华为技术有限公司 一种数据操作的方法、设备及系统
CN113590254A (zh) * 2020-04-30 2021-11-02 深信服科技股份有限公司 一种虚拟机通信的方法、装置、系统和介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979619B2 (en) * 2008-12-23 2011-07-12 Hewlett-Packard Development Company, L.P. Emulating a line-based interrupt transaction in response to a message signaled interrupt
CN101819564B (zh) * 2009-02-26 2013-04-17 国际商业机器公司 协助在虚拟机之间进行通信的方法和装置
US9910689B2 (en) * 2013-11-26 2018-03-06 Dynavisor, Inc. Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101667144A (zh) * 2009-09-29 2010-03-10 北京航空航天大学 一种基于共享内存的虚拟机通信方法
CN101859263A (zh) * 2010-06-12 2010-10-13 中国人民解放军国防科学技术大学 一种支持在线迁移的虚拟机间快速通信方法
CN101887393A (zh) * 2010-07-01 2010-11-17 中兴通讯股份有限公司 基于半虚拟化技术的设备故障复现方法及系统
US9507617B1 (en) * 2013-12-02 2016-11-29 Trend Micro Incorporated Inter-virtual machine communication using pseudo devices
CN106844008A (zh) * 2017-01-03 2017-06-13 华为技术有限公司 一种数据操作的方法、设备及系统
CN113590254A (zh) * 2020-04-30 2021-11-02 深信服科技股份有限公司 一种虚拟机通信的方法、装置、系统和介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
PAMM_一种面向基于内存共享的域间通信的优化模型;孙瑞辰;《计算机科学》;第42卷(第11A期);全文 *

Also Published As

Publication number Publication date
CN116149820A (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
US9081703B2 (en) Method and apparatuses for facilitating sharing device connections between a host and client based on the power mode of the host
US8830228B2 (en) Techniques for enabling remote management of servers configured with graphics processors
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
CN104598294B (zh) 用于移动设备的高效安全的虚拟化方法及其设备
CN106797388B (zh) 跨系统多媒体数据编解码方法、装置、电子设备和计算机程序产品
CN107707622B (zh) 一种访问桌面云虚拟机的方法、装置及桌面云控制器
CN106776067B (zh) 多容器系统中系统资源的管理方法及管理装置
CN108549571B (zh) 一种适用于可信执行环境中的安全虚拟化方法
CN111314799A (zh) 终端系统构架、通信系统及通信方法、存储介质
WO2022179423A1 (zh) 虚拟化处理系统、方法、装置及设备
US20210389966A1 (en) Micro kernel based extensible hypervisor and embedded system
CN114499945B (zh) 一种虚拟机的入侵检测方法及装置
CN108292233B (zh) 开启虚拟机的应用处理器
CN117389694B (zh) 基于virtio-blk技术提升虚拟存储IO性能的方法
CN115269057A (zh) 基于设备树的隔离系统生成配置文件的方法
CN115309511B (zh) 基于Xen的数据交互方法、装置、存储介质以及电子设备
US7552434B2 (en) Method of performing kernel task upon initial execution of process at user level
US10467078B2 (en) Crash dump extraction of guest failure
CN116149820B (zh) 基于Xen的域间通信方法、装置、设备及存储介质
CN106131020B (zh) 一种防火墙虚拟化的模块以及管理方法
US9798562B2 (en) Facilitation of guest application display from host operating system
CN109308232B (zh) 虚拟机热迁移故障后回滚的方法、装置以及系统
CN107608756B (zh) 一种基于cpu硬件特性的虚拟机自省触发方法及系统
CN109522111A (zh) 异构生态系统的调用方法、装置、电子设备及存储介质
CN115629809A (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