在虚拟机或其他计算机实体之间传送数据的系统和方法技术方案

技术编号:2872064 阅读:204 留言:0更新日期:2012-04-11 18:40
一种在具有共享存储器的第一和第二计算机程序之间通信的方法,所述第一计算机程序具有用于第一工作队列的第一工作调度器,所述第二计算机程序具有用于第二工作队列的第二工作调度器,所述方法包含如下步骤:    从所述第一程序向所述共享存储器写用于所述第二程序的消息或数据,并以一个工作项目更新所述第二工作队列,该工作项目指出用于所述第二程序的消息或数据;    与所述更新步骤相关联,确定所述第二程序当前是否忙;    如果是,则不因所述消息或数据而中断所述第二程序;以及    如果不是,则中断所述第二程序以处理在其工作队列上的所述消息或数据。(*该技术在2023年保护过期,可自由使用*)

【技术实现步骤摘要】

一般地说,本专利技术涉及计算机系统,更具体地说,本专利技术论及在虚拟机、逻辑分区或应用程序之间传送消息和数据的有效技术。
技术介绍
在许多计算机环境中,两个或更多个计算机实体需要交换消息或数据。这些计算机实体包括虚拟机、逻辑分区和在单一操作系统(如Unix或Windows NT)上运行的应用。虚拟机操作系统在今天是众所周知的,它包含一个公共基础部分和若干单独的用户部分。在一个IBM z/VM操作系统中,该公共基础部分称作“控制程序”或“CP”,而每个用户部分称作“虚拟机”或“宾客(guest)”。在每个虚拟机上能运行许多应用。每个虚拟机有它自己的工作调度器(以及相关联的工作队列)而且是作为个人操作系统显现给用户及其应用。每个虚拟机以它们所支持的应用的名义执行命令。不同的虚拟机能通过公共基础部分彼此通信。不同虚拟机之间经由CP进行的通信是以消息的形式实现的,这些消息由虚拟化通信设备如Guest Lan或IBM专有协议(如IUCV)传送。尽管这些通信是由多样协议传送的,但所有这些通信机制至少有四个共同性质a)消息数据首先被写入发送方的虚拟地址空间。b)在每个接收方虚拟机中为每个消息产生一个中断。这调用每个接收方虚拟机中的中断处理。c)为实现通信,CP必须被调用。d)CP把消息数据从发送方虚拟地址空间复制到所有接收方的虚拟地址空间。采用上述通信方法,存在显著的开销,此种开销是与调用CP、产生中断、处理中断和把消息数据从发送方虚拟地址空间复制到每个接收方的虚拟地址空间相关联的。下面是对IUCV的更详细描述。IUCV是IBM专有的点到点协议。点对点协议从一个发送方向一个接收方传送数据。为经由IUCV进行通信,发送方首先调用CP,指出通信的预期接收方的标识。CP产生一个对该接收方的中断,如果该接收方同意通信,则CP向该接收方提供一个通信路径id(标识)。然后,CP还中断该发送方并向该发送方提供该通信路径id。为发送数据,该发送方调用CP,指出先前得到的路径id和要发送的数据。CP使用该路径id去识别接收方并产生对该接收方的中断。该接收方通过调用CP以接收该数据作为对中断的响应。于是CP从发送方的虚拟地址空间向接收方的虚拟地址空间复制数据并对发送方产生一个中断,指出数据已被传送。下面是对Gest Lan的更详细描述。Guest Lan是使用局域网(LAN)协议的一种虚拟化通信设备。Lan协议允许在一个发送方和多个接收方之间同时通信。为经由Guest Lan通信,发送方和接收方都调用CP,指出它们希望加入Guest Lan。为发送数据,发送方调用CP,指出要发送的数据和哪些接收方应得到该数据。CP为每个所确定的接收方产生一个中断。每个接收方通过调用CP以接收数据来响应。于是CP把数据从发送方的虚拟地址空间复制到每个接收方的虚拟地址空间。一旦所有接收方已收到该数据,CP对发送方产生一个中断,指出该数据已传送给所有接收方。逻辑分区环境也是今天众所周知的。逻辑分区是对单个计算机系统的资源的一种逻辑划分,这种划分是由软件和微代码完成的。每个逻辑分区各自是由一个或多个CPU、存储器和外围设备的配置规定的。在一个逻辑分区上运行的操作系统看待它的逻辑分区几乎与真实的计算机区分不开,当然,逻辑分区可能提供某些附加的服务,这些服务在真实计算机上是得不到的。所以,该操作系统基本上不知道它是运行在一个逻辑分区上,而且它基本上不知道这同一真实计算机上的其他逻辑分区。每个分区也有它自己的调度器,并如在虚拟机环境中那样使用中断从一个逻辑分区到另一个逻辑分区传送消息/数据。有其他已知技术用于当两个应用运行在同一操作系统(如WindowsNT或Unix)上时一个应用与另一个应用间的通信。在这一环境中,操作系统对这两个应用使用同一个调度器。根据这些已知的通信技术,当应用“A”要与应用“B”通信时,应用A调用/通知该操作系统内的管理程序(supervisor)。该调用包括可由应用A访问的存储器中该消息/数据的地址。作为响应,管理程序把该消息/数据复制到应用B能访问的位置。接下来,管理程序把一个工作单元(work element)放到调度队列上。该工作单元把应用B认作接收方并包括一个取消息/数据命令。然后,调度器在与操作系统调度策略和工作单元相对优先级相一致的时刻把该工作单元调度到应用B。下面是一些可能的已知调度策略。如果应用B当前不忙,则当处理器变为空闲和/或未被处理(任何应用的)更高优先级工作单元所占用时,该消息/数据工作单元被调度到应用B。如果应用B当前忙于另一个优先级较低的工作项目,则调度器可能在该较低优先级工作项目完成它的被分配的处理器时间片或对操作系统进行一次调用时替入该消息/数据工作项目。但是,“中断”该操作系统以向应用B传送消息/数据是不适当的,因为这会导致开销。对调度器的共享使这种做法没有必要。如上文指出的那样,虚拟机、逻辑分区和其他环境没有共同的调度器。本专利技术的一个目的是提供一种有效的方法,用于在a)运行在同一基础操作系统上的两个不同的虚拟机、b)同一计算机的两个逻辑分区或c)运行在同一计算机上但有不同调度器的两个应用之间的通信/数据传送。本专利技术的一个目的是提供一种有效的方法,用于a)全部运行在同一基础操作系统上的一个虚拟机到两个或更多个其他虚拟机、b)同一计算机的一个逻辑分区到两个或更多个其他逻辑分区或c)运行在同一计算机上但有不同调度器的一个应用到两个或更多个其他应用的通信/数据传送。
技术实现思路
本专利技术在于一种方法,用于有共享存储器的第一和第二计算机程序之间的通信。第一计算机程序有第一工作调度器用于第一工作队列。第二计算机程序有第二工作调度器用于第二工作队列。一个消息或数据被从第一程序写入共享存储器供第二程序使用,以一个工作项目对第二工作队列进行更新,该工作项目指出用于第二程序的消息或数据。与更新步骤相关联的是确定第二程序当前是否忙。如果是,则第二程序不会因为该消息或数据而被中断。当其后第二程序变为不忙时,该第二程序便无需中断而接收和执行该工作项目去接收该消息或数据。如果第二程序当前不忙,则第二程序被中断以在它的工作队列上处理该消息或数据。(这给第二程序以最小负担。)根据本专利技术的另一特性,有一种方法用于具有共享存储器和共同基础操作系统的第一和第二虚拟机之间的通信。第一虚拟机有第一工作调度器用于第一工作队列。第二虚拟机有第二工作调度器用于第二工作队列。第一和第二工作队列驻留在由第一和第二虚拟机二者共享的存储器中。无需调用共同基础操作系统,一个消息或数据被从第一虚拟机写入共享存储器供第二虚拟机使用,以一个工作项目对第二工作队列进行更新,该工作项目指出用于第二虚拟机的消息或数据。其后,第二虚拟机程序从共享存储器中读取该消息或数据。附图说明图1是根据本专利技术的虚拟机操作系统方框图。图2是显示根据本专利技术由图1的虚拟机实现的接收来自另一虚拟机的消息或数据的过程的流程图。图3是显示根据本专利技术由图1的虚拟机实现的向另一虚拟机发送消息或数据的过程的流程图。图4是根据本专利技术的逻辑上分区的计算机系统的方框图。图5是显示根据本专利技术由图4的计算机系统的一个逻辑分区实现的接收来自另一逻辑分区的消息或数据的过程的流程图。图6是显示根据本专利技术由图4的一个本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:S·S·舒尔茨X·特卡特寿
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

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

1
相关领域技术
  • 暂无相关专利