进程间通信方法、装置及计算机可读介质制造方法及图纸

技术编号:23459383 阅读:22 留言:0更新日期:2020-03-03 05:26
本申请公开了一种进程间通信方法、装置及计算机可读介质,该方法包括:宿主机在位图中目标客户端对应的目标位写入激活标志;所述目标客户端为虚拟机中所述宿主机待通知的客户端,所述目标位用于指示所述目标客户端为待通知的客户端或指示所述目标客户端不为待通知的客户端;所述宿主机向中断寄存器写入中断命令;所述中断寄存器为所述虚拟机和所述宿主机共用的寄存器,所述中断命令包含中断号,所述中断命令用于指示所述中断号与所述目标位的组合对应的客户端从消息接收队列接收消息。申请实施例中,通过中断号和位图中写有激活标志的比特位的组合指示待通知的客户端,可以大大扩展Ivshmem可支持的客户端的数量,实现简单。

Interprocess communication methods, devices and computer readable media

【技术实现步骤摘要】
进程间通信方法、装置及计算机可读介质
本申请涉及计算机
,尤其涉及通信方法、装置及计算机可读介质。
技术介绍
随着通信技术的发展,在进行虚拟化或云计算处理时,往往需要在操作系统内的进程间、虚拟机/容器与虚拟机之间以及虚拟机/容器与宿主机之间进行进程间通信。进程是装入内存并独立执行的程序,每个进程都有自己的私有进程空间,对其他进程是不可见的。而进程间通信就是让独立的进程间传输控制信息,或与其他进程交换数据的机制。共享内存虚拟设备(IVsharememory,Ivshmem)是虚拟机内部共享内存的外设部件互连标准(PeripheralComponentInterconnect,PCI)设备。虚拟机之间实现内存共享是把内存映射成虚拟机内进程的PCI设备来实现的。虚拟机与宿主机之间进行进程间通信主要是通过Ivshmem提供的中断机制实现的,通过宿主机的用户态跨越虚拟机内核态通知虚拟机用户态进程。宿主机向虚拟机通信,即宿主机内的进程想要正确地唤醒虚拟机内的进程(客户端),就必须要通过识别中断的方式来区分消息需要发送给哪个虚拟机的进程(客户端)。然而,Ivshmem仅支持64个中断,意味着仅凭借Ivshmem的特性,虚拟机的客户端只能够有64个。随着虚拟化技术的发展,虚拟机中的客户端的数量越来越多,64个中断远远不能满足需求。因此,需要研究如何解决Ivshmem支持的客户端的数量受限的问题。
技术实现思路
本申请提供了一种进程间的通信方法、装置及计算机可读介质,用于解决Ivshmem支持的客户端的数量受限的问题。第一方面本申请提供了一种进程间通信方法,该方法包括:宿主机在位图中目标客户端对应的目标位写入激活标志;所述目标客户端为虚拟机中所述宿主机待通知的客户端,所述目标位用于指示所述目标客户端为待通知的客户端或指示所述目标客户端不为待通知的客户端;所述宿主机向中断寄存器写入中断命令;所述中断寄存器为所述虚拟机和所述宿主机共用的寄存器,所述中断命令包含中断号,所述中断命令用于指示所述中断号与所述目标位的组合对应的客户端从消息接收队列接收消息。上述宿主机和上述虚拟机运行在同一个进程间通信装置中,该进程间通信装置可以是服务器、台式电脑、笔记本电脑、手机等运行有宿主机程序和虚拟机程序的装置。本申请实施例的执行主体为进程间通信装置。可选的,所述宿主机和所述虚拟机共享内存。所述位图位于共享内存。也就是说,所述进程间通信装置中的任意进程或可访问共享内存的进程均可以访问所述位图。Ivshmem是虚拟机内部共享内存的PCI设备,虚拟机与宿主机的通信主要是通过Ivshmem提供的中断机制实现的。然而,Ivshmem仅支持64个中断,每个中断对应一个中断号,每个中断号对应一个虚拟机内的客户端(进程),意味着仅凭借Ivshmem的特性,虚拟机内的客户端只能够有64个。所述位图包含至少两个比特。通过所述中断号与所述位图的组合可以成倍的扩展Ivshmem可支持的客户端的数量。举例来说,Ivshmem支持64个中断,位图包含64比特,1个中断和该位图中1个比特的组合对应一个客户端,这样中断和位图的组合就对应64×64个客户端。本申请实施例中,通过中断号和位图中写有激活标志的比特位的组合指示待通知的客户端,可以大大扩展Ivshmem可支持的客户端的数量,实现简单。在一个可选的实现方式中,所述位图包含N个比特,所述目标位占用至少一个比特,所述N为大于2的整数,所述中断号和所述目标位的组合对应所述目标客户端。在该实现方式中,通过中断号和目标位的组合指示待通知的客户端,实现简单。在一个可选的实现方式中,所述宿主机在位图中目标客户端对应的目标位写入激活标志包括:所述宿主机采用比较并交换CAS操作在所述目标位写入所述激活标志。比较并交换(CompareandSwap,CAS)操作是原子操作,用于保证并发安全性。所述宿主机采用CAS操作在所述目标位写入所述激活标志时,可以屏蔽其他进程同时对所述位图进行操作,进而保证并发安全性。CAS可以做到对位图中单个值(比特)的原子修改,很大程度上减小了屏蔽粒度。另外,CAS操作是屏蔽粒度最小的操作,可以减少位图被闲置的时间,提高位图的使用频率。在该实现方式中,宿主机采用CAS在位图中写入激活标志,可以保证并发安全性的同时,提高位图的使用频率。在一个可选的实现方式中,所述宿主机在位图中目标客户端对应的目标位写入激活标志包括:所述宿主机在所述位图中所述目标客户端对应的所述目标位写入所述激活标志的过程中,采用中断屏蔽的方式屏蔽对所述位图的目标操作,所述目标操作为除向所述目标位写入所述激活标志外的操作。在该实现方式中,采用中断屏蔽可以屏蔽其他程序对位图的操作,以便于保证位图中的激活标志与中断号的组合可以准确地指示待通知的客户端,实现简单。在一个可选的实现方式中,所述宿主机在位图中目标客户端对应的目标位写入激活标志之前,所述方法还包括:所述宿主机向所述目标客户端的所述消息接收队列写入所述消息。在该实现方式中,宿主机向目标客户端的消息接收队列写入消息,并通过该目标客户端对应的中断号和目标位指示该目标客户端,以便于该目标客户端接收到该消息,实现简单。第二方面本申请提供了另一种进程间通信方法,该方法包括:虚拟机内核态的外设部件互连标准PCI设备获得中断寄存器中的中断命令;所述中断寄存器为所述虚拟机和宿主机共用的寄存器,所述中断命令包含中断号,所述中断命令用于指示目标客户端从消息接收队列接收消息,所述目标客户端为虚拟机中对应目标组合的客户端,所述目标组合为所述中断号与位图中写有激活标志的比特位的组合;所述PCI设备读取所述位图,并确定所述位图中的目标位写有所述激活标志;所述PCI设备确定所述中断号与所述目标位的组合对应的所述目标客户端;所述PCI设备通知所述目标客户端从所述消息接收队列接收所述消息。本申请实施例中,PCI设备通过中断号与位图中写有激活标志的比特位的组合对应待激活的客户端,可以大大扩展Ivshmem可支持的客户端的数量,实现简单。在一个可选的实现方式中,所述PCI设备通知所述目标客户端从所述消息接收队列接收所述消息包括:所述PCI设备激活所述目标客户端对应的内核态信号量。在该实现方式中,PCI设备通过激活目标客户端对应的内核态信号量来解放该目标客户端用户态的等待状态,以便于该目标客户端从消息接收队列接收消息,实现简单。在一个可选的实现方式中,所述PCI设备通知所述目标客户端从所述消息接收队列接收所述消息之后,所述方法还包括:所述目标客户端从内核态阻塞状态返回用户态,并从所述消息接收队列接收所述消息。在该实现方式中,目标客户端从内核态阻塞状态返回用户态以激活用户态接收消息的流程,可以及时接收消息,实现简单。在一个可选的实现方式中,所述位图包含N个比特,所述目标位占用至少一个比特,所述N为大于2的整数,所本文档来自技高网...

【技术保护点】
1.一种进程间通信方法,其特征在于,包括:/n宿主机在位图中目标客户端对应的目标位写入激活标志;所述目标客户端为虚拟机中所述宿主机待通知的客户端,所述目标位用于指示所述目标客户端为待通知的客户端或指示所述目标客户端不为待通知的客户端;/n所述宿主机向中断寄存器写入中断命令;所述中断寄存器为所述虚拟机和所述宿主机共用的寄存器,所述中断命令包含中断号,所述中断命令用于指示所述中断号与所述目标位的组合对应的客户端从消息接收队列接收消息。/n

【技术特征摘要】
1.一种进程间通信方法,其特征在于,包括:
宿主机在位图中目标客户端对应的目标位写入激活标志;所述目标客户端为虚拟机中所述宿主机待通知的客户端,所述目标位用于指示所述目标客户端为待通知的客户端或指示所述目标客户端不为待通知的客户端;
所述宿主机向中断寄存器写入中断命令;所述中断寄存器为所述虚拟机和所述宿主机共用的寄存器,所述中断命令包含中断号,所述中断命令用于指示所述中断号与所述目标位的组合对应的客户端从消息接收队列接收消息。


2.根据权利要求1所述的方法,其特征在于,所述位图包含N个比特,所述目标位占用至少一个比特,所述N为大于2的整数,所述中断号和所述目标位的组合对应所述目标客户端。


3.根据权利要求1或2所述的方法,其特征在于,所述宿主机在位图中目标客户端对应的目标位写入激活标志包括:
所述宿主机采用比较并交换CAS操作在所述目标位写入所述激活标志。


4.根据权利要求3所述的方法,其特征在于,所述宿主机在位图中目标客户端对应的目标位写入激活标志之前,所述方法还包括:
所述宿主机向所述目标客户端的所述消息接收队列写入所述消息。


5.一种进程间通信方法,其特征在于,包括:
虚拟机内核态的外设部件互连标准PCI设备获得中断寄存器中的中断命令;所述中断寄存器为所述虚拟机和宿主机共用的寄存器,所述中断命令包含中断号,所述中断命令用于指示目标客户端从消息接收队列接收消息,所述目标客户端为虚拟机中对应目标组合的客户端,所述目标组合为所述中断号与位图中写有激活标志的比特位的组合;
所述PCI设备读取所述位图,并确定所述位图中的目标位写有所述激活标志;
所述PCI设备确定所述中断号与所述目标位的组合对应的所述目标客户端;
所述PCI设备通知所述目标客户端从所述消息接收队列接收所述消息。


6.根据权利要求5所述的方法,其特征在于,所述PCI设备通知所述目标客户端从所述消息接收队列接收所述消息包括:
所述PCI设备激活所述目标客户端对应的内核态信号量。


7.根据权利要求6所述的方法,其特征在于,所述PCI设备通知所述目标客户端从所述消息接收队列接收所述消息之后,所述方法还包括:
所述目标客户端从内核态阻塞状态返回用户态,并从所述消息接收队列接收所述消息。


8.根据权利要求5至7任意一项所述的方法,其特征在于,所述位图包含N个比特,所述目标位占用至少一个比特,所述N为大于2的整数,所述中断号和所述目标位的组合对应所述目标客户端。


9.根据权利要求8所述的方法,其特征在于,所述PCI设备读取所述位图之后,所述方法还包括:
所述PCI设备采用比较并交换CAS操作清除所述目标位的所述激活标志。


10.一种进程间通信装置,其特征在于,包括:
写单元,用于在位图中目标客户端对应的目标位写入激活标志;所述目标客户端为虚拟...

【专利技术属性】
技术研发人员:王蘅王霖张占忠
申请(专利权)人:成都华为技术有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1