一种支持优先级的虚拟机间实时通信方法与流程

未命名 09-29 阅读:101 评论:0


1.本发明属于虚拟化技术领域,具体涉及一种支持优先级的虚拟机间实时通信方法。


背景技术:

2.随着计算机技术的飞速发展,面对硬件性能的提升,人们对于硬件的使用率有了更高的需求,在很多应用场景下认为资源的利用率与理论值相差甚远,造成了资源浪费,虚拟化技术的出现很好的解决了这个问题,而在虚拟化技术中,其核心便是在单一硬件资源上运行不同的软件架构,满足多样的软件需求,这其中涉及到一项重要的技术——虚拟机间通信,这项技术是虚拟化技术不可避免的也是应用场景中最核心的需求。
3.当前的虚拟化技术的虚拟机间通信技术繁多,其底层逻辑实现大抵可以归为以下两类:
4.虚拟外设设备通信,虚拟化技术提供了一种虚拟外设设备实现虚拟机之间的通信。其实现方式与在物理机上运行的操作系统的方式相同,由用户编写驱动并向虚拟机注册,底层虚拟机提供基于软件的交换机或者映射的共享io进行消息交互。
5.事件通道、共享内存等通信机制,其底层实现方式则是基于共享内存与中断控制器的中断机制,由消息发送的虚拟机触发虚拟中断,再触发物理中断,物理中断再触发目标虚拟机所对应的中断向量,这时中断向量所注册的中断服务程序运行,将共享内存中将数据读取走。
6.以上概括了当前主流的虚拟机间通信所使用的主要技术。
7.虚拟机间通信一般涉及一种使用虚拟外设设备通信与另一种结合中断与内存的实现方式。前者在完全虚拟化技术中使用较多,因完全虚拟化技术中的虚拟机认为自己是在物理机上运行的,所以虚拟机使用虚拟设备与在物理机的操作系统操作方式一样,每一个虚拟机的虚拟设备都需要向所在虚拟机注册虚拟设备,编写相应的驱动程序、应用程序,过程较为繁琐,数据也需要经过多级的传递,效率较低,在完全虚拟化技术中虚拟机一般作为进程,运行上宿主机上,无法为实时操作系统虚拟机提供实时性特性。
8.另一种结合中断与共享内存的实现方式,一般应用于半虚拟化技术当中,虚拟机间通过虚拟化出的虚拟中断控制器进行通信,虚拟中断控制器会为每一个虚拟机分配中断向量,虚拟机向虚拟中断控制器注册实现中断服务程序,这样的中断分配设置虽然满足虚拟机之间的通信需求,但是虚拟机本身执行一次中断,物理机执行一次中断,每次都会涉及上下文切换,而上下文切换是非常消耗资源的,两次的切换资源消耗,将严重影响到中断响应时间,导致消息通信的延时,在半虚拟化技术中消息通过中断程序进行共享内存的消息读取,但是在虚拟机间发生并发通信时,只能按照先进先出的方式进行通信,这将有可能使某些有强实时性要求的虚拟机操作系统消息产生滞后,而无实时性要求的虚拟机操作系统消息先处理了,导致本末倒置的结果。


技术实现要素:

9.(一)要解决的技术问题
10.本发明要解决的技术问题是如何提供一种支持优先级的虚拟机间实时通信方法,以解决现有虚拟机间通信实时性的不足:效率较低、资源开销过大、无法提供消息优先级支持等方面的问题。
11.(二)技术方案
12.为了解决上述技术问题,本发明提出一种支持优先级的虚拟机间实时通信方法,该方法包括如下步骤:
13.s01、虚拟机绑核启动,每个虚拟机分配一个配置文件,包括:每个虚拟机配对的核、每个虚拟机对应优先级与消息内存域地址信息;
14.s02、发送方虚拟机的应用发生虚拟机通信需求;
15.s03、发送方虚拟机的应用将数据写入发送缓冲区,数据包括目标虚拟机信息;
16.s04、发送方虚拟机将发送缓冲区数据经由虚拟机管理器存入目标虚拟机对应的消息内存域;
17.s05、发送方虚拟机继而由虚拟机管理器处理分发核间中断;
18.s06、发送方虚拟机触发核间中断;
19.s07、发送方虚拟机返回任务,继续执行任务;
20.s08、中断服务程序逐级判断各优先级对应的消息内存域的消息累积数量,判断各优先级对应的消息内存域是否有消息,优先处理优先级高的操作系统消息内存域;
21.s09、中断服务程序读取对应操作系统消息内存域中的消息到目标虚拟机的接收缓存区;
22.s10、接收方虚拟机应用获取从消息内存域取回接收缓冲区的数据。
23.进一步地,所述步骤s01中,每个虚拟机对应一个或者多个核。
24.进一步地,所述步骤s01中,每个虚拟机对应一个优先级,每个优先级对应一个消息内存域地址。
25.进一步地,所述步骤s05中,由虚拟机管理器向目标虚拟机所绑定的核分发一个核间中断,若同时绑定多个核,向其中任意一个核分发。
26.进一步地,所述步骤s06中,虚拟机管理器负责获取发生核间中断通信的双方虚拟机间的信息,明确哪个虚拟机是发送方,发送方虚拟机对应的核,明确哪个虚拟机是接收方,接收方虚拟机对应的核,继而根据统计的信息,调用管理核间中断的函数接口。
27.进一步地,在内存设置有结构体内存区域和消息内存域,结构体内存区域用于存放描述消息内存域的结构体structmsg_status,结构体内存区域和消息内存域分开管理。
28.进一步地,结构体structmsg_status管理着不同优先级的消息内存域的地址以及该优先级下消息内存域中的消息累积数量,所述步骤s08中,根据结构体structmsg_status中管理的消息累积数量判断消息内存域是否有消息。
29.进一步地,msg_pri0_count表示优先级0的消息当前有几条,当该消息内存域中的消息发生存储事件时,即发生虚拟机通信事件,msg_pri0_count计数加1,当发生中断响应事件取出消息,msg_pri0_count计数减1;每次处理中断,优先判断高优先级的count是否有数据,优先从高优先级消息内存域获取数据。
30.进一步地,消息内存域是根据用户需要为各优先级的虚拟机消息固定开辟一段内存空间,并连续开辟n段一样大小的内存空间,n为优先级数量。
31.进一步地,在某个特定的优先级消息内存域内,使用循环队列或循环链表进行该优先级消息内存域的消息管理。
32.(三)有益效果
33.本发明提出一种支持优先级的虚拟机间实时通信方法,本发明提供一种支持优先级的虚拟机间实时通信方法,为虚拟化平台提供一种更高效、实时性更强的解决方案,满足嵌入式领域强实时性的应用场景。本发明中结合硬件特性,通过虚拟机绑核并结合核间中断机制,减少了虚拟机管理器为虚拟机分配、切换核的开销,核间中断机制减小虚拟机间通信的复杂度,减少中断控制器或虚拟中断控制器所涉及的多级上下文切换开销,降低软件设计难度,大幅提高通信的响应速率,优化了实时性。通过软件设计,对虚拟机与共享内存域进行优先级的绑定,实现针对不同强实时性要求的虚拟机进行优先级通信的特权设置,进一步优化实时性。
附图说明
34.图1为本发明的支持优先级的虚拟机间实时通信方法流程图;
35.图2为本发明的多优先级内存域示意图。
具体实施方式
36.为使本发明的目的、内容和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
37.本发明的软件设计方案基于一般的虚拟机管理器的特性,利用硬件核间中断机制以及共享内存机制设计的一种支持优先级的强实时性虚拟机间通信方法。
38.在提高实时性的同时,本发明还为不同的虚拟机设置虚拟机间通信的优先级特权,根据通信目标机的优先级特权将消息存储在具备优先级属性的共享内存域,在虚拟机通信发生并发时,优先处理高优先级虚拟机的数据。
39.如图1所示,本发明的支持优先级的虚拟机间实时通信方法,包括如下步骤:
40.s01、[启动]虚拟机绑核启动,每个虚拟机分配一个配置文件,包括:每个虚拟机配对的核、每个虚拟机对应优先级与消息内存域地址信息;
[0041]
其中,每个虚拟机对应一个或者多个核心;
[0042]
其中,每个虚拟机对应一个优先级,每个优先级对应一个消息内存域地址;
[0043]
s02、发送方虚拟机的应用发生虚拟机通信需求;
[0044]
s03、发送方虚拟机的应用将数据写入发送缓冲区,数据包括目标虚拟机信息;
[0045]
s04、发送方虚拟机将发送缓冲区数据经由虚拟机管理器存入目标虚拟机对应的消息内存域;
[0046]
s05、发送方虚拟机继而由虚拟机管理器处理分发核间中断;
[0047]
其中,由虚拟机管理器向目标虚拟机所绑定的核分发一个核间中断,若同时绑定多个核,向其中任意一个核分发;
[0048]
s06、发送方虚拟机触发核间中断;
[0049]
其中,虚拟机管理器负责获取发生核间中断通信的双方虚拟机间的信息,明确哪个虚拟机是发送方,发送方虚拟机对应的核,明确哪个虚拟机是接收方,接收方虚拟机对应的核,继而根据统计的信息,调用管理核间中断的函数接口;
[0050]
s07、发送方虚拟机返回任务,继续执行任务;
[0051]
s08、中断服务程序逐级判断各优先级对应的消息内存域的消息累积数量,在某实施例中,使用了3个优先级,0-2,该数量记录在msg_pri0_count~msg_pri2_count中,判断各优先级对应的消息内存域是否有消息,优先处理优先级高的操作系统消息内存域;
[0052]
其中,msg_pri0_count为描述存放具有优先级的消息内存域的结构体struct msg_status的成员,用于描述对应优先级为0的内存域的消息累积数量,类似的,msg_pri2_count用于描述对应优先级为2的内存域的消息累积数量;
[0053]
s09、中断服务程序读取对应操作系统消息内存域中的消息到目标虚拟机的接收缓存区;
[0054]
s10、接收方虚拟机应用获取从消息内存域取回接收缓冲区的数据。
[0055]
如图2所示的内存分布,分为两个部分:
[0056]
一个是用于存放描述消息内存域的结构体structmsg_status,该结构体存放于特定的结构体内存区域,与消息内存域分开管理,该结构体管理着不同优先级的消息内存域的地址以及该优先级下消息内存域中的消息累积数量,其中msg_pri0_count表示优先级0的消息当前有几条(优先级为0的内存域可能对应一个或多个虚拟机操作系统),当该消息内存域中的消息发生存储事件时,即发生虚拟机通信事件,msg_pri0_count计数加1,当发生中断响应事件取出消息,msg_pri0_count计数减1。每次处理中断,优先判断高优先级的count是否有数据,优先从高优先级消息内存域获取数据。类似的,msg_pri1_count表示优先级1的消息当前有几条,msg_pri2_count表示优先级2的消息当前有几条。
[0057]
另一个是各优先级的消息内存域所在的内存起始地址,例如,msg_pri0_addr为优先级0的消息内存域所在的内存起始地址,根据用户需要为各优先级的虚拟机消息固定开辟一段内存空间,并连续开辟n段一样大小的内存空间(可根据用户需求自定义),n为优先级数量,在某个特定的优先级消息内存域内,包括不限于使用循环队列、循环链表等方式进行该优先级消息内存域的消息管理。
[0058]
本发明的虚拟机通信方式充分结合了硬件特性与软件,优化实时性增加虚拟机优先级特性,本发明具有以下关键点:
[0059]
1.虚拟机绑核,并采用核间中断技术,减小开销,提高效率,增强实时性;
[0060]
2.一种支持虚拟机通信优先级的内存管理方法;
[0061]
本发明提供一种支持优先级的虚拟机间实时通信方法,为虚拟化平台提供一种更高效、实时性更强的解决方案,满足嵌入式领域强实时性的应用场景。本发明中结合硬件特性,通过虚拟机绑核并结合核间中断机制,减少了虚拟机管理器为虚拟机分配、切换核的开销,核间中断机制减小虚拟机间通信的复杂度,减少中断控制器或虚拟中断控制器所涉及的多级上下文切换开销,降低软件设计难度,大幅提高通信的相映速率,强化了实时性。通过软件设计,对虚拟机与共享内存域进行优先级的绑定,实现针对不同强实时性要求的虚拟机进行优先级通信的特权设置,进一步优化实时性。
[0062]
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人
员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

技术特征:
1.一种支持优先级的虚拟机间实时通信方法,其特征在于,该方法包括如下步骤:s01、虚拟机绑核启动,每个虚拟机分配一个配置文件,包括:每个虚拟机配对的核、每个虚拟机对应优先级与消息内存域地址信息;s02、发送方虚拟机的应用发生虚拟机通信需求;s03、发送方虚拟机的应用将数据写入发送缓冲区,数据包括目标虚拟机信息;s04、发送方虚拟机将发送缓冲区数据经由虚拟机管理器存入目标虚拟机对应的消息内存域;s05、发送方虚拟机继而由虚拟机管理器处理分发核间中断;s06、发送方虚拟机触发核间中断;s07、发送方虚拟机返回任务,继续执行任务;s08、中断服务程序逐级判断各优先级对应的消息内存域的消息累积数量,判断各优先级对应的消息内存域是否有消息,优先处理优先级高的操作系统消息内存域;s09、中断服务程序读取对应操作系统消息内存域中的消息到目标虚拟机的接收缓存区;s10、接收方虚拟机应用获取从消息内存域取回接收缓冲区的数据。2.如权利要求1所述的支持优先级的虚拟机间实时通信方法,其特征在于,所述步骤s01中,每个虚拟机对应一个或者多个核。3.如权利要求1所述的支持优先级的虚拟机间实时通信方法,其特征在于,所述步骤s01中,每个虚拟机对应一个优先级,每个优先级对应一个消息内存域地址。4.如权利要求1所述的支持优先级的虚拟机间实时通信方法,其特征在于,所述步骤s05中,由虚拟机管理器向目标虚拟机所绑定的核分发一个核间中断,若同时绑定多个核,向其中任意一个核分发。5.如权利要求4所述的支持优先级的虚拟机间实时通信方法,其特征在于,所述步骤s06中,虚拟机管理器负责获取发生核间中断通信的双方虚拟机间的信息,明确哪个虚拟机是发送方,发送方虚拟机对应的核,明确哪个虚拟机是接收方,接收方虚拟机对应的核,继而根据统计的信息,调用管理核间中断的函数接口。6.如权利要求1-5任一项所述的支持优先级的虚拟机间实时通信方法,其特征在于,在内存设置有结构体内存区域和消息内存域,结构体内存区域用于存放描述消息内存域的结构体structmsg_status,结构体内存区域和消息内存域分开管理。7.如权利要求6所述的支持优先级的虚拟机间实时通信方法,其特征在于,结构体structmsg_status管理着不同优先级的消息内存域的地址以及该优先级下消息内存域中的消息累积数量,所述步骤s08中,根据结构体structmsg_status中管理的消息累积数量判断消息内存域是否有消息。8.如权利要求7所述的支持优先级的虚拟机间实时通信方法,其特征在于,msg_pri0_count表示优先级0的消息当前有几条,当该消息内存域中的消息发生存储事件时,即发生虚拟机通信事件,msg_pri0_count计数加1,当发生中断响应事件取出消息,msg_pri0_count计数减1;每次处理中断,优先判断高优先级的count是否有数据,优先从高优先级消息内存域获取数据。9.如权利要求6所述的支持优先级的虚拟机间实时通信方法,其特征在于,消息内存域
是根据用户需要为各优先级的虚拟机消息固定开辟一段内存空间,并连续开辟n段一样大小的内存空间,n为优先级数量。10.如权利要求9所述的支持优先级的虚拟机间实时通信方法,其特征在于,在某个特定的优先级消息内存域内,使用循环队列或循环链表进行该优先级消息内存域的消息管理。

技术总结
本发明涉及一种支持优先级的虚拟机间实时通信方法,属于虚拟化技术领域。本发明为不同的虚拟机设置虚拟机间通信的优先级特权,根据通信目标机的优先级特权将消息存储在具备优先级属性的共享内存域,在虚拟机通信发生并发时,优先处理高优先级虚拟机的数据。本发明结合硬件特性,通过虚拟机绑核并结合核间中断机制,减少了虚拟机管理器为虚拟机分配、切换核的开销,核间中断机制减小虚拟机间通信的复杂度,减少中断控制器或虚拟中断控制器所涉及的多级上下文切换开销,降低软件设计难度,大幅提高通信的响应速率,优化了实时性。本发明实现针对有不同实时性要求的虚拟机进行优先级通信的特权设置,进一步优化实时性。进一步优化实时性。进一步优化实时性。


技术研发人员:施志强 陈树峰 王仁 李明磊 韩伟伦 张杨 李新乐
受保护的技术使用者:北京计算机技术及应用研究所
技术研发日:2023.06.27
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐