用于在虚拟机之间通讯的方法和装置与流程

文档序号:11133752阅读:438来源:国知局
用于在虚拟机之间通讯的方法和装置与制造工艺

本发明涉及一种用于在第一虚拟机和第二虚拟机之间在超级监视器的情况下进行通讯的方法。除此之外,本发明涉及一种相应的装置、一种相应的计算机程序以及一种相应的存储介质。



背景技术:

长久以来,真实存在的或者假想的计算机系统的模拟在实践的计算机科学中为人所知,并且在专业圈中被称为虚拟机(virtual machine, VM)。所谓的超级监视器(Hypervisor)允许在相应的软件架构中使得多个虚拟机同时地运行于被称为主机系统的物理机上。在这种情况下,所述超级监视器管理所述主机系统的硬件资源,例如中央处理器(central processing unit, CPU)、共同使用的内存(shared memory(分享的内存))和可能的外围设备,并且按照需要把它们分配给单个的虚拟机。

WO2008/095548A1公开了一种管理模块、生产者及消费者计算机、它们的布置以及用于在计算机之间通过共同使用的存储器进行通讯的方法,其中所述的模块包括:用于存储和管理三重缓冲器状态的机构(其中,每个缓冲器具有读-子缓冲器、写-子缓冲器和空闲-子缓冲器)、利用至少一个生产者计算机和至少一个消费者计算机进行通讯的机构,并且其中形成所述的管理机构,以便在答复生产者或者消费者计算机的访问时,在所述三重缓冲器的情况下确定一种有针对性的读-子缓冲器或写-子缓冲器)。



技术实现要素:

本发明提出了按照独立权利要求的一种用于在第一虚拟机和第二虚拟机之间在一种管理程序或者说超级监视器(Hypervisor)的情况下进行通讯的方法、一种相应的计算机程序以及一种相应的存储介质。

这种解决方案的优点在于在虚拟机之间的根据本发明的通讯的数据一致性,该一致性不依赖于在每个虚拟机中共同起作用的行为。

通过在从属权利要求中列举的措施,在独立权利要求中给出的基本构思的优选改型方案和改进方案成为可能。因此能够规定的是:所述读取器侧的交换和所述写入器侧的交换分别构成一种原子的操作(atomare Operation)。相应的实施形式是完全不同步的,从而保留了在虚拟机之间的最重要的时间分隔。

根据其它的方面能够规定的是:所述等待缓冲器是一种在所述存储器中由所述超级监视器所管理的多个相同大小的等待缓冲器中的一个等待缓冲器,而且上述多个缓冲器构成了一种根据它们写入器侧的交换在时间上有序的等待队列。所述变型方案考虑到了无空隙的数据流的要求:在此期望的是,所述正在读取的虚拟机包含了一种不间断的数据流,甚至当所述正在读取的虚拟机暂时慢于所述正在写入的虚拟机的时候。

根据另一方面能够规定的是:所述超级监视器被认为特别是在存储器管理单元上(memory management unit,MMU),操控一种与所述存储器相连的存储器保护单元(memory protection unit,MPU),该存储器管理单元通过所述第一虚拟机或所述第二虚拟机来保护所述读取区域免于写入访问,而且保护所述等待区域免于写入访问以及读取访问;其中所述读取器侧的交换和所述写入器侧的交换借助于所述存储器保护单元来进行。这种实施形式确保了:在虚拟机之间的在时间上和空间上的分隔不能够由于在虚拟机之间在通讯的路途中恶意的或错误的行为而被损坏。

根据另一方面能够规定的是:在所述读取器侧的交换之后,所述超级监视器把所述被交换的读缓冲器的关于所述存储器的存储地址返回地交付给所述第一虚拟机,并且在所述写入器侧的交换之后,所述超级监视器把所述被交换的写缓冲器的关于所述存储器的存储地址返回地交付给所述第二虚拟机。因此,所述数据传输就导致了尽可能少的执行时间-额外花费,如同是该数据传输在待进行数据交换的缓冲器之间通过复制数据所导致的那样。

根据另一方面能够规定的是:所述第一虚拟机借助于所述返回交付的存储器地址,根据第一调用指令,在所述读取区域上继续进行一种读访问,并且所述第二虚拟机借助于所述返回交付的存储器地址,根据第二调用指令,在所述写入区域上继续进行一种写访问。在这种情况下,每个虚拟机如此长久地占用一种缓冲器:按照该虚拟机需要该缓冲器的时间并且因此该虚拟机在时间上与其它的虚拟机不相关联。

最后能够规定的是:所述第一虚拟机和所述第二虚拟机重复地进行所述读访问和所述写访问。在这种情况下,所述读取器一直接收到带有最新的无缺陷地被写入的数据的缓冲器。当所述正在读取的虚拟机的读取平均地快于所述正在写入的虚拟机对于数据流的写入之时,则该数据流没有空隙。

附图说明

本发明的实施例展示在了附图中,并且会在接下来的说明中进一步地阐述。附图示出:

图1:在第一实施形式的框架中使用的存储器的框图。

图2:在第二实施形式的框架中使用的存储器的框图。

图3:根据所述实施形式中的一种实施形式的方法的简化序列图。

图4:示意性的根据本发明的第三实施方式的控制装置。

具体实施方式

图1和图2示意性地图解说明了一种用于在第一虚拟机11和第二虚拟机12之间在超级监视器13下进行通信的、根据本发明的方法10。对此需要以下步骤:

如同在图1中所展示的那样,具有任意的但是相同的大小的读缓冲器14、写缓冲器15和等待缓冲器16。如同在根据图2的场景中,所述等待缓冲器完全能够指的是多个等待缓冲器17、18、19中的一个等待缓冲器,上述缓冲器共同构成一种等待队列29(行列)。缓冲器14、15、16、17、18、19能够位于存储器20的任何一种中。通常,上述缓冲器位于随机存取存储器(random access memory, RAM)中。

在图3中说明的、在缓冲器14、15、16、17、18、19上的访问31、32通过存储器管理单元或者其它的存储器保护单元进行保护。上述存储器保护单元仅仅通过一种超级监视器13受到控制。

超级监视器13通过下述方式设置所述存储器保护单元:读缓冲器14能够被第一虚拟机11读取,以及写缓冲器15能够被第二虚拟机12写入。所有的等待存储器16、17、18、19既不对第一虚拟机11也不对第二虚拟机12允许访问。

第一虚拟机11和第二虚拟机12能够读取所述读缓冲器14或者写入所述写缓冲器15,只要上述虚拟机需要上述缓冲器。

当进行写入的第二虚拟机12结束了所述写入访问32时,第二虚拟机通过有关的应用程序编程接口(application programming interface, API)的第一调用指令24告知所述超级监视器13。超级监视器13从第二虚拟机12处收回在当前的写缓冲器15上的写入访问32。代替于此,超级监视器提供给第二虚拟机在未被占用的等待缓冲器19中的一个等待缓冲器上的写入访问32,所述等待缓冲器的数据已经被读取过了。超级监视器通过重新设置所述存储器保护单元而实现上述功能。最终,超级监视器13通过所述应用程序编程接口把在答复第一调用程序24中仅可访问的写缓冲器15的存储器地址33返回给第二虚拟机12。超级监视器13确保进行所有作为原子的操作(atomare Operation)28的这些操作。

现在,进行写入的所述第二虚拟机12有了新的写缓冲器15,第二虚拟机能够写入该新的写缓冲器。

当读取的第一虚拟机11结束了读取访问31时,第一虚拟机通过所述的应用程序编程接口的第二调用指令25告知所述超级监视器13。超级监视器13从第一虚拟机11处收回在当前的读缓冲器14上的写入访问31。代替于此,超级监视器提供给第一虚拟机在等待缓冲器17上的读取访问31,所述等待缓冲器包含有最新的被写入的数据。超级监视器通过重新设置存储器保护单元来实现上述功能。最终,超级监视器13通过应用程序编程接口把在答复第二调用指令25中仅可访问的读缓冲器14的存储器地址33返回交付给第一虚拟机11。所述超级监视器13确保进行所有作为原子的操作28的这些操作。

现在,进行读取的第一虚拟机11有了新的读缓冲器14,第一虚拟机能够从该新的读缓冲器中读取。

所述读取访问和写入访问32能够在不确定的时间重复。

上述方法10能够例如在软件或者硬件或者在软件和硬件的混合形式中(例如在控制装置30中)实现,如同在图4中的示意性的示图说明的那样。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1