CN1497469A - 在虚拟机或其他计算机实体之间传送数据的系统和方法 - Google Patents

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

Info

Publication number
CN1497469A
CN1497469A CNA2003101017764A CN200310101776A CN1497469A CN 1497469 A CN1497469 A CN 1497469A CN A2003101017764 A CNA2003101017764 A CN A2003101017764A CN 200310101776 A CN200310101776 A CN 200310101776A CN 1497469 A CN1497469 A CN 1497469A
Authority
CN
China
Prior art keywords
program
data
message
virtual machine
work queue
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.)
Granted
Application number
CNA2003101017764A
Other languages
English (en)
Other versions
CN100405351C (zh
Inventor
S・S・舒尔茨
S·S·舒尔茨
ㄌ厥
X·特卡特寿
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1497469A publication Critical patent/CN1497469A/zh
Application granted granted Critical
Publication of CN100405351C publication Critical patent/CN100405351C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Abstract

一种在具有共享存储器的第一和第二计算机程序之间通信的方法。该第一计算机程序具有第一工作调度器用于第一工作队列。该第二计算机程序具有第二工作调度器用于第二工作队列。无需引起中断,一个消息或数据被从第一程序写入共享存储器供第二程序使用,而第二工作队列以一个工作项目进行更新,该工作项目指出用于第二程序的消息或数据。与更新步骤相关联,确定第二程序当前是否忙。如果是,则第二程序不会因为该消息或数据而被中断。当其后第二程序变为不忙时,该第二程序便无需中断而接收和执行该工作项目去接收该消息或数据。如果第二程序当前不忙,则第二程序被中断以处理它的工作队列上的该消息或数据。这给第二程序造成最小负担。

Description

在虚拟机或其他计算机实体之间 传送数据的系统和方法
技术领域
一般地说,本发明涉及计算机系统,更具体地说,本发明论及在虚拟机、逻辑分区或应用程序之间传送消息和数据的有效技术。
背景技术
在许多计算机环境中,两个或更多个计算机实体需要交换消息或数据。这些计算机实体包括虚拟机、逻辑分区和在单一操作系统(如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的一个逻辑分区实现的向另一逻辑分区发送消息或数据的过程的流程图。
具体实施方式
现在详细地参考附图,各图中相同的标号始终表示相同的部件。图1显示根据本发明的虚拟机操作系统,一般以10表示。作为举例,虚拟机操作系统10可以是IBM z/VM版本4.2.0或4.3.0操作系统,当然本发明也能被纳入其他虚拟机或非虚拟机操作系统。z/VM 4.2.0操作系统的详情在IBM出版物“z/VM 4.2.0一般信息”(z/VM 4.20 General Information)(文档号GC24-5991-03)中被公开,它可从国际商业机器公司(PO Box29570,IBM Publications,Raleigh,North Corolina 27626-0570)或在万维网上得到,网址为WWW.IBM.com/shop/publications/order。该出版物在这里被纳入作为本公开内容的一部分供参考。操作系统10在物理计算机11如IBM zSeries(z系列)大型机中执行,当然本发明也能在其他服务器计算机或个人计算机中实现。操作系统10包含用户部分12、14、16...(在z/VM操作系统中称作“虚拟机”或“宾客虚拟机”)和公共基础部分20(在z/VM操作系统中称作“CP”)。每个用户部分12、14和16提供标准的操作系统功能,如I/O、通信等。每个用户部分12、14和16能并发执行若干不同的应用,如图中所示应用32、34和36。作为举例,应用32、34和36可以是TELNET、FTP和PING(并使用本发明代替先有技术的通信机制)。在z/VM 4.2.0和4.3.0操作系统中,Linux(Linus Torvalds的商标)操作系统也能在每个虚拟机12、14和16上运行,当然,Linux操作系统不需要虚拟机12、14和16的某些操作系统功能,因为它们前已由Linux操作系统提供了。尽管未画出,通常还有许多其他虚拟机及相关的操作系统,它们也共享公共基础部分20。同样,在每个虚拟机上可以有多个应用在执行。基础部分20包括已知的功能,如虚拟化的存储器、虚拟化的诸设备以及虚拟化的诸CPU。
计算机11还包括存储器区21,它由全部虚拟机12、14、16等共享。作为“被共享的”存储器区,每个虚拟机能直接寻址和访问该共享存储器区21以从中读取数据和向其中写入数据。对于由应用请求的或由应用产生的数据,该应用向它运行所在的相应虚拟机发出读或写请求。这个相应的虚拟机代表该应用访问共享存储器,如下文中参考图2和图3解释的那样。在本发明的(多个实施例中的)一个实施例中,共享存储器21是基础部分20的非连续保存段(Discontiguous Saved Segment,DCSS)部分的一部分。DCSS是共享存储器的一种特殊形式,它能被动态加载和卸载。在虚拟机终止甚至CP终止时它仍能存在,并能包含可执行代码。然而,除了共享存储器外,DCSS内的其他功能不是本发明所需的,因此本发明不局限于涉及DCSS或其等效物的那些实现。
每个虚拟机12、14和16包括各自的读功能32a、32b和32c,各自的写功能42a、42b和42c以及各自的调度器22a、22b和22c。当虚拟机在它执行的应用中遇到写命令时便调用写功能。该写功能是处于待用状态的,所以对写功能任务无需排队。写功能把数据从虚拟机写入共享存储器。写操作不调用CP。当虚拟机在它执行的应用中遇到读命令时便调用读功能。该读功能是处于待用状态的,所以对读功能任务无需排队。读功能从共享存储器中读数据。这样,数据不是从写方虚拟地址空间复制到读方虚拟地址空间。还有,不调用CP去读共享存储器,而这减少了开销。每个虚拟机当完成一个工作项目并因此需要另一个工作项目(如果有的话)时便调用(call/invoke)它的调度器。响应这一调用,该调度器检验共享存储器21内其相应队列26a、26b和26c上的工作项目。
在共享存储器21中还存储表24。该表指出每个虚拟机12、14、16的状态。每个虚拟机12、14和16还包括各自的工作队列管理功能(WorkQueue Management Function,“WQMF”)81a、81b或81c,该WQMF当出现工作项目时便把它们加到工作队列中,并把每个虚拟机的状态更新为“闲”或“不闲”,如下文描述的那样。表24包括每个虚拟机的标识和指出各自虚拟机是否空闲的一个指示。表24还包括用于每个虚拟机的指针,指向各自工作队列26a、26b或26c。当状态变化时表24也变化。在图1所示例子中,当前虚拟机12不空闲,即它当前正在执行另一个工作项目/任务。然而,虚拟机12在完成它的当前工作项目之后在它的工作队列26a中没有任何事情要做。虚拟机14当前是空闲的,但在其队列26b中有一个工作项目。在队列26b中的工作项目是读共享存储器的内容,从位置24D00开始并延伸给定的长度。(在工作项目之后的词“null(空)”表明该队列中再没有工作项目。)虚拟机16当前不空闲,并在其队列26c中有一个工作项目。在队列26c中的工作项目是读共享存储器中的内容,从位置24D00开始并延伸给定的长度。
图2是流程图,显示每个调度器的操作,即每个调度器与其他调度器分离地实现图2的步骤。在一个虚拟机完成每个工作项目/任务之后,它调用它的调度器去寻找要完成的新的工作项目(决策48)。在该虚拟机内的调度器响应这一调用,检验相应的工作队列(对调度器22a是工作队列26a,对调度器22b是工作队列26b,对调度器22c是工作队列26c)以查找工作项目(步骤50)。如果在该队列中存在一个工作项目(决策52),则调度器对该工作项目进行分析(parse),以确定它的性质并确定调用哪个功能来完成该工作项目。在读请求的情况中,调度器调用读功能,在由该工作项目指出的位置读消息/数据。这样,能在不产生中断和不调用中断处理的情况下完成这个读操作。然后,调度器循环回到决策52,以再次检验工作队列。如果在决策52的任何循环期间,在工作队列中没有工作项目,则该调度器在表24中为相应的虚拟机设置状态字段为“闲”(步骤60)。然后,调度器通知该虚拟机进入等待状态(步骤62)。在这一等待状态,该虚拟机是处于“睡眠”或“闲”方式,这时它不为应用也不为它本身执行任何工作项目。该虚拟机将保持在这一等待状态,直至收到一个中断指出在其工作队列中有了新的工作项目(决策66)。当收到这一中断时,该虚拟机的WQMF在表24中为相应的虚拟机设置状态字段为“不闲”(步骤68)。接下来,该调度器循环回到决策52以检验该工作队列去寻找工作项目。在这时,在该工作队列中应该有一个工作项目。
图3显示虚拟机之一(例如虚拟机12)当它想要向另一虚拟机(如虚拟机14)发送一个消息/数据时的操作。在步骤80,虚拟机12调用它的写功能32a以把数据写入共享存储器21。如前文解释的那样,每个虚拟机通过提供适当的地址能直接访问共享存储器。于是,虚拟机12的写功能32a通过给定要写入的地址和提供要写的数据把该数据写入共享存储器。接下来,在虚拟机12内的工作队列管理功能(“WQMF”)81a通过把一工作项目写入虚拟机14的工作队列26b使得对工作队列26b添加了一个工作项目(步骤82)。因为该工作队列是在共享存储器中,所以这不需要调用CP。接下来,WQMF 81a通过检验表24确定虚拟机14当前是否空闲(决策84)。如果不空闲,则虚拟机12不再做任何事情去完成这一通信,而且在这一通信过程的任何一点CP都不被调用(终止步骤86)。根据本发明,虚拟机12不去中断虚拟机14,这是因为在中断虚拟机过程中涉及的开销。如上文参考图2解释的那样,当虚拟机14完成它的当前工作项目时,它将自动调用(invoke/call)它的调度器去检验其工作队列以寻找另一个工作项目(决策48和步骤50)。在那时它将看到来自虚拟机12的这个工作项目。再次参考决策84,如果虚拟机14空闲,则根据本发明,虚拟机12向虚拟机14发出“唤醒”型中断(步骤88)。这需要调用CP。这个唤醒型中断告警/调用虚拟机14,告知它在其队列26b中有一个工作项目。虚拟机12以发出这一中断完成数据通信的它的那一部分。该“唤醒”中断自动地使虚拟机14启动其调度器22b(图2的决策48)以检验其工作队列寻找工作项目。然后调度器22b实现图2中所示步骤以检验它的工作队列26b(步骤50和决策52),然后读数据(步骤54)。
图3还显示虚拟机之一(例如虚拟机12)当它想要与两个或更多个其他虚拟机(例如虚拟机14和16)进行通信时的操作。在步骤80,虚拟机12调用它的写功能32a以把数据写入共享存储器21。于是,虚拟机12通过给定要写入的地址和提供要写的数据把该数据写入共享存储器。在图1中所示例子中,数据被写入以地址24D00开始的共享存储器位置。接下来,虚拟机12内的WQMF 81a通过把工作项目、数据地址和数据长度写到工作队列上,对虚拟机14和16的工作队列26b和26c添加了一个工作项目(步骤82)。然后,虚拟机12内的WQMF 81a通过检验表24确定虚拟机14和16当前是否空闲(决策84)。在图1所示例子中,虚拟机14是空闲的,但虚拟机16是忙的。于是,对于忙的虚拟机16,虚拟机12不再做任何事情去完成这一通信(终止步骤86)。根据本发明,虚拟机12不去中断忙的虚拟机16,这是因为在中断虚拟机过程中涉及的开锁。如上文参考图2解释的那样,当忙的虚拟机16完成它的当前工作项目时,它将自动检验它的工作队列以寻找另一工作项目(决策48和步骤50)。在那时它将看到来自虚拟机12的这个工作项目,于是通信将被完成,而无需调用CP。再次参考决策84,因为虚拟机14是空闲的,于是根据本发明,虚拟机12向空闲的虚拟机14发出“唤醒”型中断(步骤88)。这个唤醒型中断告警/调用空闲虚拟机14,告知它在其队列中有一个工作项目。虚拟机12以发出这一中断完成数据通信的它的那一部分。该“唤醒”中断自动地使虚拟机14调用(invoke/call)它的调度器22b以检验其工作队列寻找工作项目。然后调度器22b实现图2中所示步骤以检验它的工作队列26b(决策52),然后读数据(步骤54)。
图4显示根据本发明的逻辑分区的计算机系统,总体上以110表示。系统110是一个物理计算机111的一个逻辑分区,该物理计算机可以是例如IBM zSeries大型机,当然本发明也能在其他服务器计算机或个人计算机中实现。系统110包含逻辑分区112、114、116。每个逻辑分区112、114和116向其应用提供标准的操作系统功能,如I/O、通信等。每个逻辑分区112、114和116能并发执行若干不同的应用,如图中所示应用132、134和136。作为举例,应用132、134和136能是Telnet,FTP以及Ping(并使用本发明代替先有技术的通信机制)。基础部分120参与计算机111及其资源的实际逻辑分区,即对一个或多个CPU分区,对存储器分区,对I/O分区等。不同于本发明的基础部分120和逻辑分区112、114及116的一个实例的诸功能在题为“企业系统/9000 9221处理器:操作您的系统—卷2(逻辑分区方式)”(Enterprise System/9000 9221 Processors:Operating Your System-Volume 2(Logically Partitioning Mode))的文档中描述,出版号为SA24-4351-02,它可从国际商业机器公司(PO Box 29570,IBM Publications,Raleigh,North Carolina 27626-0570)或在万维网上得到,网址为WWW.IBM.com/shop/publications/order。
计算机111还包括存储器区121,它由全部球逻辑分区112、114、116等共享。作为“被共享的”存储器区,每个逻辑分区能直接寻址和访问该共享存储器区121以从中读取数据和向其写入数据。对于由应用请求的数据或由应用产生的数据,该应用向它运行所在的逻辑分区发出读或写请求。这个相应的逻辑分区代表该应用访问该共享存储器,如下文中参考图5和图6解释的那样。
每个逻辑分区112、114和116包括各自的读功能132a、132b和132c,各自的写功能142a、142b和142c以及各自的调度器122a、122b和122c。当逻辑分区在它执行的应用中遇到写命令时便调用写功能。该写功能是处于等待状态的,所以对写功能任务无需排队。写功能把数据从逻辑分区写入共享存储器,所以不调用基础部分120。当逻辑分区在它执行的应用中遇到读命令时便调用读功能。该读功能是处于待用状态的,所以对读功能任务无需排队。读功能从共享存储器中读数据。所以不调用基础部分120。还有,数据不是从写方的虚拟地址空间复制到读方的虚拟地址空间。每个逻辑分区当完成一个工作项目并因此需要另一个工作项目(如果有的话)时便调用(call/invoke)它的调度器。响应这一调用,调度器检验共享存储器121内其相应队列126a、126b或126c上的工作项目。
在共享存储器121中还存储表124。该表指出每个逻辑分区112、114和116的状态。每个逻辑分区112、114和116还包括各自的WQMF 181a、181b或181c,该WQMF当出现工作项目时便把它们加到工作队列中,并把每个逻辑分区的状态更新为“闲”或“不闲”,如下文描述的那样。表124包括每个逻辑分区的标识和指出各逻辑分区是否空闲的一个指示。表124还包括用于每个逻辑分区的指针,指向各自工作队列126a、126b或126c。当状态变化时表124也变化。在图4所示例子中,当前逻辑分区112不空闲,即它当前还在执行另一个工作项目/任务。然而,逻辑分区112在完成它的当前工作项目之后在它的工作队列126a中没有任何事情要做。逻辑分区114当前是空闲的,但在其队列126b中有一个工作项目。在队列126b中的工作项目是读共享存储器的内容,从位置24D00开始并延伸给定的长度。(在工作项目之后的词“null(空)”表明该队列中再没有工作项目。)逻辑分区116当前不空闲,并在其队列126c中有一个工作项目。在队列126c中的工作项目是读共享存储器中的内容,从位置24D00开始并延伸给定的长度。
图5是流程图,显示每个调度器的操作,即每个调度器与其他调度器分离地实现图5的步骤。在一个逻辑分区完成每个工作项目/任务之后,它调用它的调度器去寻找要完成的新的工作项目(决策148)。在该逻辑分区内的调度器响应这一调用,检验相应的工作队列(对调度器122a是工作队列126a,对调度器122b是工作队列126b,对调度器122c是工作队列126c)以查找工作项目(步骤150)。如果在该队列中存在一个工作项目(决策152),则调度器对该工作项目进行分析(parse),以确定它的性质并确定调用哪个功能来完成该工作项目。在读请求的情况中,调度器调用读功能,在由该工作项目指出的位置读消息/数据。这样,能在不产生中断和不调用中断处理的情况下完成这个读操作。然后,调度器循环回到决策152,以再次检验工作队列。如果在决策152的任何循环期间,在工作队列中没有工作项目,则该调度器在表124中为相应的逻辑分区设置状态字段为“闲”(步骤160)。然后,调度器通知该逻辑分区进入等待状态(步骤162)。在这一等待状态,该逻辑分区是处于“睡眠”或“闲”方式,这时它不为应用也不为它本身执行任何工作项目。该逻辑分区将保持在这一等待状态,直到收到一个中断指出在其工作队列中有了新的工作项目(决策166)。当收到这一中断时,该逻辑分区的WQMF在表124中为相应的逻辑分区设置状态字段为“不闲”(步骤168)。接下来,该调度器循环回到决策152以检验该工作队列去寻找工作项目。在这时,在该工作队列中应该有一个工作项目。
图6显示逻辑分区之一(例如逻辑分区112)当它想要向另一逻辑分区(例如逻辑分区114)发送一个消息/数据时的操作。在步骤180,逻辑分区112调用它的写功能132a以把数据写入共享存储器121。如前文解释的那样,每个逻辑分区通过提供适当的地址能直接访问共享存储器。于是,逻辑分区112的写功能132a通过给定要写入的地址和提供要写的数据把该数据写入共享存储器。接下来,在逻辑分区112内的WQMF 181a通过把一工作项目写入逻辑分区114的工作队列126b使得对工作队列126b添加了一个工作项目(步骤182)。接下来,WQMF 181a通过检验表124确定逻辑分区114当前是否空闲(决策184)。如果不空闲,则该逻辑分区不再做任何事情去完成这一通信,而且在这一通信过程的任何一点基础部分120都不被调用(终止步骤186)。根据本发明,逻辑分区112不去中断逻辑分区114,这是因为在中断逻辑分区过程中涉及的开销。如上文参考图5解释的那样,当逻辑分区114完成它的当前工作项目时,它将自动调用(invoke/call)它的调度器去检验其工作队列以寻找另一个工作项目(决策148和步骤150)。在那时它将看到来自逻辑分区112的这个工作项目。再参考决策184,如果逻辑分区114空闲,则根据本发明,逻辑分区112向逻辑分区114发出“唤醒”型中怕(步骤188)。这个唤醒型中断告警/调用逻辑分区114,告知它在其队列126b中有一个工作项目。逻辑分区112以发出这一中断完成数据通信的它的那一部分。该“唤醒”中断自动地使逻辑分区114启动其调度器122b(图5中的决策148)以检验其工作队列寻找工作项目。然后调度器22b实现图5中所示步骤以检验它的工作队列126b(步骤150和决策152),然后读数据(步骤154)。
图6还显示逻辑分区之一(例如逻辑分区112)当它想要与两个或更多个其他逻辑分区(例如逻辑分区114和116)进行通信时的操作,在步骤180,逻辑分区112调用它的写功能132a以把数据写入共享存储器121。于是,逻辑分区112通过给定要写入的地址和提交要写的数据把该数据写入共享存储器。在图4中所示例子中,数据被写入以地址24D00开始的共享存储器位置。接下来,逻辑分区112内的WQMF 181a通过把工作项目、数据地址和数据长度写到工作队列上,对逻辑分区114和116的工作队列126b和126c添加了一个工作项目(步骤182)。然后,逻辑分区112内的WQMF 181a通过检验表124确定逻辑分区114和116当前是否空闲(决策184)。在图4所示例子中,逻辑分区114是空闲的,但逻辑分区116是忙的。于是,对于忙的逻辑分区116,逻辑分区112不再做任何事情去完成这一通信(终止步骤186)。根据本发明,逻辑分区112不去中断忙的逻辑分区116,这是因为在中断逻辑分区过程中涉及的开销。如上文参考图5解释的那样,当忙的逻辑分区116完成它的当前工作项目时,它将自动检验它的工作队列以寻找另一工作项目(决策148和步骤150)。在那时它将看到来自逻辑分区112的这个工作项目,于是通信将被完成,而无需调用基础部分120。再次参考决策184,因为逻辑分区114是空闲的,于是根据本发明,逻辑分区112向空闲的逻辑分区114发出“唤醒”型中断(步骤188)。这个唤醒型中断告警/调用空闲的逻辑分区114,告知它在其队列中有一个工作项目。逻辑分区112以发出这一中断完成数据通信的它的那一部分。该“唤醒”中断自动使逻辑分区114调用(invoke/call)它的调度器112b以检验其工作队列寻找工作项目。然后调度器122b实现图5中所示步骤以检验它的工作队列126b(决策152),然后读数据(步骤154)。

Claims (21)

1.一种在具有共享存储器的第一和第二计算机程序之间通信的方法,所述第一计算机程序具有用于第一工作队列的第一工作调度器,所述第二计算机程序具有用于第二工作队列的第二工作调度器,所述方法包含如下步骤:
从所述第一程序向所述共享存储器写用于所述第二程序的消息或数据,并以一个工作项目更新所述第二工作队列,该工作项目指出用于所述第二程序的消息或数据;
与所述更新步骤相关联,确定所述第二程序当前是否忙;
如果是,则不因所述消息或数据而中断所述第二程序;以及
如果不是,则中断所述第二程序以处理在其工作队列上的所述消息或数据。
2.根据权利要求1所述的方法,其特征在于,当所述第二程序随后变为不忙时,所述第二程序,无需中断,而接收和执行所述工作项目以接收所述消息或数据。
3.根据权利要求1所述的方法,其特征在于,所述第一程序是一个第一虚拟机而所述第二程序是一个第二虚拟机。
4.根据权利要求1所述的方法,其特征在于,所述第一和第二工作队列驻留在由所述第一和第二计算机程序共享的一个存储器中。
5.根据权利要求1所述的方法,其特征在于,所述第一和第二工作队列驻留在所述共享存储器中。
6.根据权利要求5所述的方法,其特征在于,所述共享存储器是由一个虚拟机操作系统的公共基础部分建立的,从而使所述共享存储器同时驻留在两个虚拟机中。
7.根据权利要求1所述的方法,其特征在于,所述第一计算机程序是一个计算机系统的一个第一逻辑分区,而所述第二计算机程序是所述计算机系统的一个第二逻辑分区。
8.根据权利要求7所述的方法,其特征在于,进一步包含一个由所述第一和第二逻辑分区共用的基本操作系统,并且所述写和更新步骤不需要调用所述基本操作系统。
9.根据权利要求1所述的方法,其特征在于,进一步包含由所述第二计算机程序从所述共享存储器读所述消息或数据的步骤。
10.根据权利要求9所述的方法,其特征在于,当从所述第一计算机程序向所述第二计算机程序传送所述消息或数据时,所述消息或数据只被一次写入所述共享存储器。
11.一种在具有共享存储器的第一和第二计算机程序之间通信的系统,所述第一计算机程序具有用于第一工作队列的第一工作调度器,所述第二计算机程序具有用于第二工作队列的第二工作调度器,所述系统包含:
用于从所述第一程序向所述共享存储器写供所述第二程序使用的消息或数据,并以一个工作项目更新所述第二工作队列的装置,该工作项目指出用于所述第二程序的消息或数据;
与所述更新步骤关联,用于确定所述第二程序当前是否忙,而且如果是忙,则不因所述消息或数据而中断所述第二程序,而如果不是忙,则中断所述第二程序以处理在其工作队列上的所述消息或数据的装置。
12.一种用于在具有共享存储器的第一和第二计算机程序之间通信的计算机程序产品,所述第一计算机程序具有用于第一工作队列的第一工作调度器,所述第二计算机程序具有用于第二工作队列的第二工作调度器,所述程序产品包含:
计算机可读介质;
用于从所述第一程序向所述共享存储器写消息或数据供所述第二程序使用,并以一个工作项目更新所述第二工作队列的程序指令装置,该工作项目指出用于所述第二程序的消息或数据;
与所述更新步骤关联,用于确定所述第二程序当前是否忙,而且如果是忙,则不因所述消息或数据而中断所述第二程序,而如果不是忙,则中断所述第二程序以处理在其工作队列上的所述消息或数据的程序指令装置;
其中,所述程序指令装置被记录在所述介质上。
13.一种在具有共享存储器和公共基础操作系统的第一和第二虚拟机之间通信的方法,所述第一虚拟机具有用于第一工作队列的第一工作调度器,所述第二虚拟机具有用于第二工作队列的第二工作调度器,所述第一和第二工作队列驻留在由所述第一和第二虚拟机二者共享的存储器中,所述方法包含如下步骤:
不调用所述公共基础操作系统,从所述第一虚拟机向所述共享存储器写用于所述第二虚拟机的消息或数据,并以一个工作项目更新所述第二工作队列,该工作项目指出用于所述第二虚拟机的消息或数据。
14.根据权利要求13所述的方法,其特征在于,与所述更新步骤相关联并且不调用所述公共基础操作系统,确定所述第二虚拟机当前是否忙,
而且
如果是忙,则不因所述消息或数据而中断所述第二虚拟机,而
如果不是忙,则中断所述第二虚拟机以处理在其工作队列上的所述消息或数据。
15.根据权利要求14所述的方法,其特征在于,所述中断步骤需要调用所述公共基础操作系统。
16.根据权利要求13所述的方法,其特征在于,所述第一调度器驻留在所述第一虚拟机中,所述第二调度器驻留在所述第二虚拟机中。
17.根据权利要求13所述的方法,其特征在于,进一步包含所述第二虚拟机程序从所述共享存储器读所述消息或数据的步骤。
18.根据权利要求17所述的方法,其特征在于,当从所述第一虚拟机向所述第二虚拟机传送所述消息或数据时,所述消息或数据只被一次写入所述共享存储器。
19.一种在具有共享存储器和公共基础操作系统的第一和第二计算机程序之间通信的方法,所述第一计算机程序具有用于第一工作队列的第一工作调度器,所述第二计算机程序具有用于第二工作队列的第二工作调度器,所述第一和第二工作队列驻留在由所述第一和第二计算机程序二者共享的存储器中,所述方法包含如下步骤:
不调用所述公共基础操作系统,从所述第一计算机程序向所述共享存储器写用于所述第二计算机程序的消息或数据并以一个工作项目更新所述第二工作队列,该工作项目指出用于所述第二计算机程序的消息或数据。
20.根据权利要求19所述的方法,其特征在于,所述第一计算机程序是一个第一逻辑分区,所述第二计算机程序是一个第二逻辑分区。
21.根据权利要求19所述的方法,其特征在于,所述第一和第二工作队列驻留在由所述第一和第二计算机程序二者共用的一个或多个存储器中。
CNB2003101017764A 2002-10-24 2003-10-23 在虚拟机或其他计算机实体之间传送数据的系统和方法 Expired - Fee Related CN100405351C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/280,987 2002-10-24
US10/280,987 US7181744B2 (en) 2002-10-24 2002-10-24 System and method for transferring data between virtual machines or other computer entities

Publications (2)

Publication Number Publication Date
CN1497469A true CN1497469A (zh) 2004-05-19
CN100405351C CN100405351C (zh) 2008-07-23

Family

ID=32107078

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003101017764A Expired - Fee Related CN100405351C (zh) 2002-10-24 2003-10-23 在虚拟机或其他计算机实体之间传送数据的系统和方法

Country Status (4)

Country Link
US (4) US7181744B2 (zh)
KR (1) KR100550197B1 (zh)
CN (1) CN100405351C (zh)
TW (1) TWI249106B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1862494A (zh) * 2005-05-12 2006-11-15 微软公司 分区总线
CN100418319C (zh) * 2006-05-18 2008-09-10 清华大学 透明计算系统中端设备间数据的传送方法
CN101331461B (zh) * 2005-12-15 2010-12-01 国际商业机器公司 虚拟数据中心联合体中的远程性能监视器
CN101946244A (zh) * 2008-02-14 2011-01-12 国际商业机器公司 降低保留设备的访问竞争
CN102707986A (zh) * 2010-09-30 2012-10-03 微软公司 子分区与父分区之间的共享存储器
CN103415838A (zh) * 2012-03-21 2013-11-27 广州市飞元信息科技有限公司 支持用户自定义的虚拟操作区域及其操作方法和系统架构
CN111868687A (zh) * 2018-03-20 2020-10-30 三菱电机株式会社 信息处理装置、方法及程序

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US7181744B2 (en) 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities
JP4012517B2 (ja) * 2003-04-29 2007-11-21 インターナショナル・ビジネス・マシーンズ・コーポレーション 仮想計算機環境におけるロックの管理
US7299468B2 (en) * 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
JP4458929B2 (ja) * 2003-07-16 2010-04-28 キヤノン株式会社 プログラム間通信装置、プログラム間通信方法、コンピュータ読み取り可能な記録媒体およびプログラム
US7784060B2 (en) * 2003-11-06 2010-08-24 Intel Corporation Efficient virtual machine communication via virtual machine queues
US7739684B2 (en) * 2003-11-25 2010-06-15 Intel Corporation Virtual direct memory access crossover
US20050155011A1 (en) * 2004-01-12 2005-07-14 Stephan Heik Method and system for restricting access in a distributed job environment
US7257811B2 (en) * 2004-05-11 2007-08-14 International Business Machines Corporation System, method and program to migrate a virtual machine
US20060005190A1 (en) * 2004-06-30 2006-01-05 Microsoft Corporation Systems and methods for implementing an operating system in a virtual machine environment
US8898246B2 (en) * 2004-07-29 2014-11-25 Hewlett-Packard Development Company, L.P. Communication among partitioned devices
WO2006015181A2 (en) * 2004-07-30 2006-02-09 Mocana Corporation Hardware acceleration for large volumes of channels
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7818746B2 (en) * 2005-03-30 2010-10-19 Hewlett-Packard Development Company, L.P. System and method for benchmarking using a multi-threaded load generator
US7797704B2 (en) * 2005-03-30 2010-09-14 Hewlett-Packard Development Company, L.P. System and method for performing work by one of plural threads using a lockable resource
US7975271B2 (en) * 2005-03-30 2011-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically determining a portion of a resource for which a thread is to obtain a lock
US8166473B2 (en) * 2005-04-21 2012-04-24 Microsoft Corporation Method and system for a resource negotiation between virtual machines
US7581225B2 (en) * 2005-04-29 2009-08-25 Microsoft Corporation Multithreading with concurrency domains
US8046737B2 (en) * 2005-04-29 2011-10-25 Microsoft Corporation XML application framework
US8275793B2 (en) 2005-04-29 2012-09-25 Microsoft Corporation Transaction transforms
US8132148B2 (en) 2005-04-29 2012-03-06 Microsoft Corporation XML application framework
US8418132B2 (en) 2005-04-29 2013-04-09 Microsoft Corporation Application description language
US7490203B2 (en) * 2005-05-12 2009-02-10 International Business Machines Corporation Method for dumping data in processing systems to a shared storage
US7478220B2 (en) * 2005-06-23 2009-01-13 International Business Machines Corporation Method, apparatus, and product for prohibiting unauthorized access of data stored on storage drives
US7937701B2 (en) * 2005-06-30 2011-05-03 Intel Corporation ACPI communication between virtual machine monitor and policy virtual machine via mailbox
US20080118065A1 (en) * 2005-07-29 2008-05-22 James Blaisdell Hardware acceleration for large volumes of channels
US7814494B1 (en) * 2005-08-26 2010-10-12 Oracle America, Inc. Method and system for performing reliable resource locking
US9274974B1 (en) 2005-10-21 2016-03-01 Vmware, Inc. Isolating data within a computer system using private shadow mappings
US7752367B2 (en) * 2005-12-22 2010-07-06 International Business Machines Corporation File-based access control for shared hardware devices
US20070162594A1 (en) * 2006-01-12 2007-07-12 Microsoft Corporation Controlled disconnection of a network device
US7941800B2 (en) * 2006-02-23 2011-05-10 Microsoft Corporation Transferring data between virtual machines by way of virtual machine bus in pipe mode
US7702843B1 (en) * 2006-04-27 2010-04-20 Vmware, Inc. Determining memory conditions in a virtual machine
US20070288938A1 (en) * 2006-06-12 2007-12-13 Daniel Zilavy Sharing data between partitions in a partitionable system
US9392078B2 (en) * 2006-06-23 2016-07-12 Microsoft Technology Licensing, Llc Remote network access via virtual machine
US8307359B1 (en) * 2006-06-23 2012-11-06 Emc Corporation Embedded virtual storage area network using a virtual block network fabric
US9213513B2 (en) * 2006-06-23 2015-12-15 Microsoft Technology Licensing, Llc Maintaining synchronization of virtual machine image differences across server and host computers
US7630368B2 (en) * 2006-06-30 2009-12-08 Sun Microsystems, Inc. Virtual network interface card loopback fastpath
US8001540B2 (en) * 2006-08-08 2011-08-16 International Business Machines Corporation System, method and program product for control of sequencing of data processing by different programs
US7346909B1 (en) * 2006-08-28 2008-03-18 Intel Corporation Network-like communication and stack synchronization for different virtual machines on the same physical device
US7650469B2 (en) * 2006-09-06 2010-01-19 International Business Machines Corporation Determining whether a non-running processor has access to an address space
US7876765B2 (en) * 2006-09-29 2011-01-25 Intel Corporation Method for supporting IP network interconnectivity between partitions in a virtualized environment
US9183524B2 (en) * 2007-02-21 2015-11-10 Novell, Inc. Imaged-based method for transport and authentication of virtualized workflows
US20080270737A1 (en) * 2007-04-26 2008-10-30 Hewlett-Packard Development Company, L.P. Data Processing System And Method
US9740637B2 (en) 2007-10-30 2017-08-22 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
US8261265B2 (en) 2007-10-30 2012-09-04 Vmware, Inc. Transparent VMM-assisted user-mode execution control transfer
US8352939B1 (en) * 2007-12-03 2013-01-08 Mcafee, Inc. System, method and computer program product for performing a security or maintenance operation in association with virtual disk data
US20090165134A1 (en) * 2007-12-21 2009-06-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Look ahead of links/alter links
US8489981B2 (en) * 2007-12-21 2013-07-16 The Invention Science Fund I, Llc Look ahead of links/alter links
US8793616B2 (en) 2007-12-21 2014-07-29 The Invention Science Fund I, Llc Look ahead of links/alter links
US8949977B2 (en) * 2007-12-21 2015-02-03 The Invention Science Fund I, Llc Look ahead of links/alter links
US8495486B2 (en) * 2007-12-21 2013-07-23 The Invention Science Fund I, Llc Look ahead of links/alter links
US8468440B2 (en) * 2007-12-21 2013-06-18 The Invention Science Fund I, Llc Look ahead of links/alter links
US8473836B2 (en) * 2007-12-21 2013-06-25 The Invention Science Fund I, Llc Look ahead of links/alter links
US8015115B2 (en) * 2007-12-27 2011-09-06 Pitney Bowes Inc. System and method for providing controlled access to a funds dispensing device from external processors
US8140834B2 (en) * 2008-02-26 2012-03-20 International Business Machines Corporation System, method and computer program product for providing a programmable quiesce filtering register
US8380907B2 (en) * 2008-02-26 2013-02-19 International Business Machines Corporation Method, system and computer program product for providing filtering of GUEST2 quiesce requests
US8458438B2 (en) * 2008-02-26 2013-06-04 International Business Machines Corporation System, method and computer program product for providing quiesce filtering for shared memory
US8527715B2 (en) * 2008-02-26 2013-09-03 International Business Machines Corporation Providing a shared memory translation facility
US8646052B2 (en) * 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
CN102007473A (zh) * 2008-04-18 2011-04-06 阿尔卡特朗讯美国公司 网络元件的处理节点之间的diameter总线通信
US8369343B2 (en) * 2008-06-03 2013-02-05 Microsoft Corporation Device virtualization
US7809875B2 (en) * 2008-06-30 2010-10-05 Wind River Systems, Inc. Method and system for secure communication between processor partitions
US7996548B2 (en) * 2008-12-30 2011-08-09 Intel Corporation Message communication techniques
US8645596B2 (en) * 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
WO2010113248A1 (ja) * 2009-03-31 2010-10-07 富士通株式会社 仮想計算機システム、情報処理装置、コンピュータプログラム及び接続制御方法
US8312100B2 (en) * 2009-03-31 2012-11-13 International Business Machines Corporation Managing orphaned requests in a multi-server environment
US8336050B2 (en) * 2009-08-31 2012-12-18 Red Hat, Inc. Shared memory inter-process communication of virtual machines using virtual synchrony
US8635632B2 (en) * 2009-10-21 2014-01-21 International Business Machines Corporation High performance and resource efficient communications between partitions in a logically partitioned system
US9092597B2 (en) * 2009-12-09 2015-07-28 Sandisk Technologies Inc. Storage device and method for using a virtual file in a public memory area to access a plurality of protected files in a private memory area
US8776067B1 (en) * 2009-12-11 2014-07-08 Salesforce.Com, Inc. Techniques for utilizing computational resources in a multi-tenant on-demand database system
US8453149B2 (en) * 2010-01-21 2013-05-28 International Business Machines Corporation Efficient multi-core processing of events
US8489708B2 (en) * 2010-04-06 2013-07-16 Microsoft Corporation Virtual application extension points
US10061701B2 (en) 2010-04-26 2018-08-28 International Business Machines Corporation Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility
US8301715B2 (en) 2010-05-20 2012-10-30 Sandisk Il Ltd. Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device
US8301694B2 (en) * 2010-05-20 2012-10-30 Sandisk Il Ltd. Host device and method for accessing a virtual file in a storage device by bypassing a cache in the host device
WO2011154020A1 (de) * 2010-06-09 2011-12-15 Siemens Aktiengesellschaft Rechenvorrichtung mit koordination des zugriffs auf einen internen speicher und betriebsverfahren
US8468524B2 (en) * 2010-10-13 2013-06-18 Lsi Corporation Inter-virtual machine time profiling of I/O transactions
WO2012147116A1 (en) * 2011-04-25 2012-11-01 Hitachi, Ltd. Computer system and virtual machine control method
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
CN102325178A (zh) * 2011-09-07 2012-01-18 西安交通大学 基于hypervisor构架的虚拟非易失闪存存储器件设备设计方法
US9473596B2 (en) 2011-09-27 2016-10-18 International Business Machines Corporation Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections
US8667048B2 (en) 2011-12-28 2014-03-04 Tatung Company Method for managing internet protocol addresses in network
US9104508B2 (en) 2012-01-18 2015-08-11 International Business Machines Corporation Providing by one program to another program access to a warning track facility
US9110878B2 (en) 2012-01-18 2015-08-18 International Business Machines Corporation Use of a warning track interruption facility by a program
US8850450B2 (en) 2012-01-18 2014-09-30 International Business Machines Corporation Warning track interruption facility
US8839447B2 (en) * 2012-02-27 2014-09-16 Ca, Inc. System and method for virtual image security in a cloud environment
KR101878297B1 (ko) * 2012-03-06 2018-08-07 삼성전자주식회사 락 홀더 선점 회복 방법 및 장치
US10019159B2 (en) 2012-03-14 2018-07-10 Open Invention Network Llc Systems, methods and devices for management of virtual memory systems
US9396101B2 (en) * 2012-06-12 2016-07-19 International Business Machines Corporation Shared physical memory protocol
US20140012704A1 (en) 2012-07-05 2014-01-09 Google Inc. Selecting a preferred payment instrument based on a merchant category
US9166865B2 (en) 2012-11-07 2015-10-20 International Business Machines Corporation Mobility operation resource allocation
US9405689B2 (en) * 2012-11-19 2016-08-02 Marvell World Trade Ltd. Locally caching data from a shared storage
US9535871B2 (en) 2012-11-27 2017-01-03 Red Hat Israel, Ltd. Dynamic routing through virtual appliances
US9454392B2 (en) * 2012-11-27 2016-09-27 Red Hat Israel, Ltd. Routing data packets between virtual machines using shared memory without copying the data packet
US9122505B1 (en) * 2013-01-31 2015-09-01 Parallels IP Holdings GmbH System and method for handling I/O timeout deadlines in virtualized systems
US9092767B1 (en) 2013-03-04 2015-07-28 Google Inc. Selecting a preferred payment instrument
US20150205542A1 (en) * 2014-01-22 2015-07-23 Vmware, Inc. Virtual machine migration in shared storage environment
US9858572B2 (en) 2014-02-06 2018-01-02 Google Llc Dynamic alteration of track data
WO2015121750A1 (en) * 2014-02-14 2015-08-20 6Wind System and method for data communication between virtual interfaces
GB2522290B (en) * 2014-07-14 2015-12-09 Imagination Tech Ltd Running a 32-bit operating system on a 64-bit machine
US10303782B1 (en) * 2014-12-29 2019-05-28 Veritas Technologies Llc Method to allow multi-read access for exclusive access of virtual disks by using a virtualized copy of the disk
US9715410B2 (en) * 2015-01-30 2017-07-25 Red Hat Israel, Ltd. Protected virtual machine function access
US10191672B2 (en) * 2015-10-16 2019-01-29 Google Llc Asynchronous copying of data within memory
US10628192B2 (en) * 2015-12-24 2020-04-21 Intel Corporation Scalable techniques for data transfer between virtual machines
AU2015408848B2 (en) * 2015-12-30 2018-10-18 Huawei Technologies Co., Ltd Method for processing acquire lock request and server
CN106959927B (zh) 2016-01-08 2020-08-25 阿里巴巴集团控股有限公司 获取虚拟机中的逻辑分区的位置信息的方法及装置
WO2017120563A1 (en) * 2016-01-08 2017-07-13 Alibaba Group Holding Limited Acquiring location information for logical partition within virtual machine
US10505791B2 (en) * 2016-12-16 2019-12-10 Futurewei Technologies, Inc. System and method to handle events using historical data in serverless systems
US10719372B2 (en) * 2017-05-22 2020-07-21 Oracle International Corporation Dynamic parallelization of data loading
US11126474B1 (en) 2017-06-14 2021-09-21 Amazon Technologies, Inc. Reducing resource lock time for a virtual processing unit
US10592281B1 (en) * 2017-09-28 2020-03-17 Amazon Technologies, Inc. Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit
CN108614728A (zh) * 2018-04-27 2018-10-02 平安科技(深圳)有限公司 虚拟机服务提供方法、装置、设备及计算机可读存储介质
CN108932170A (zh) * 2018-06-06 2018-12-04 华东师范大学 一种同驻虚拟机间高效共享内存文件系统的机制
US10713082B2 (en) * 2018-11-28 2020-07-14 Sap Se Cloud platform integration load balancer
KR102465858B1 (ko) * 2020-12-18 2022-11-11 인하대학교 산학협력단 동일 물리 머신에서 공유메모리를 이용한 가상 머신 간 고성능 통신 기법
CN112685137A (zh) * 2021-01-07 2021-04-20 广州市品高软件股份有限公司 一种云计算虚拟机块存储熔断保护方法
US11915065B2 (en) * 2022-01-20 2024-02-27 Vmware, Inc. Brokerless reliable totally ordered many-to-many interprocess communication on a single node that uses shared memory and multicast

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61206043A (ja) 1985-03-11 1986-09-12 Hitachi Ltd 仮想計算機システムにおける割込制御方法
US4835685A (en) 1985-05-06 1989-05-30 Computer X, Inc. Virtual single machine with message-like hardware interrupts and processor exceptions
JPS6336445A (ja) 1986-07-31 1988-02-17 Nec Corp 仮想計算機システムにおけるフアイル共用制御方式
JPH02112055A (ja) 1988-10-21 1990-04-24 Fuji Electric Co Ltd マルチプロロセッサシステムのデータ転送方式
CA2027934C (en) 1989-12-22 1994-06-21 Cherie C. Barnes Accelerated deadlock detection in congested data transactions
JPH04367963A (ja) 1991-06-15 1992-12-21 Hitachi Ltd 共有記憶通信方法
JPH0619785A (ja) * 1992-03-27 1994-01-28 Matsushita Electric Ind Co Ltd 分散共有仮想メモリーとその構成方法
US5390328A (en) * 1992-03-30 1995-02-14 International Business Machines Corporation Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage
JPH0713823A (ja) 1993-06-24 1995-01-17 Nec Corp 仮想計算機システムにおけるファイル資源管理方式
IT1264644B1 (it) * 1993-07-02 1996-10-04 Alcatel Italia Metodo per permettere lo scambio di informazioni fra processi attraverso un dispositivo di comunicazione
JP3696901B2 (ja) * 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
US5884077A (en) * 1994-08-31 1999-03-16 Canon Kabushiki Kaisha Information processing system and method in which computer with high load borrows processor of computer with low load to execute process
JP3512910B2 (ja) * 1995-07-06 2004-03-31 株式会社東芝 分散計算機システムにおける記憶空間管理方法、計算機及びデータ転送方法
US5706489A (en) * 1995-10-18 1998-01-06 International Business Machines Corporation Method for a CPU to utilize a parallel instruction execution processing facility for assisting in the processing of the accessed data
US5794044A (en) * 1995-12-08 1998-08-11 Sun Microsystems, Inc. System and method for runtime optimization of private variable function calls in a secure interpreter
JPH09319653A (ja) 1996-05-31 1997-12-12 Canon Inc 情報処理装置、情報処理システム及びその制御方法
US5953538A (en) * 1996-11-12 1999-09-14 Digital Equipment Corporation Method and apparatus providing DMA transfers between devices coupled to different host bus bridges
US6438663B1 (en) * 1996-12-11 2002-08-20 Steeleye Technology, Inc. System and method for identifying shared virtual memory in a computer cluster
US6170045B1 (en) * 1997-04-30 2001-01-02 International Business Machines Corporation Cross-system data piping using an external shared memory
FR2763714B1 (fr) * 1997-05-26 1999-07-02 Bull Sa Compteurs de remplacement pour machine avec memoire a acces non uniforme
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6003066A (en) * 1997-08-14 1999-12-14 International Business Machines Corporation System for distributing a plurality of threads associated with a process initiating by one data processing station among data processing stations
US6389482B1 (en) * 1997-08-28 2002-05-14 International Business Machines Corp. Dynamic transitioning from a local pipe to a cross-system pipe
US6205528B1 (en) * 1997-08-29 2001-03-20 International Business Machines Corporation User specifiable allocation of memory for processes in a multiprocessor computer having a non-uniform memory architecture
US6542926B2 (en) * 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US6332180B1 (en) 1998-06-10 2001-12-18 Compaq Information Technologies Group, L.P. Method and apparatus for communication in a multi-processor computer system
JPH11149387A (ja) * 1997-11-17 1999-06-02 Hitachi Ltd 共有装置制御方法及びその実施装置
US6601146B2 (en) 1998-06-16 2003-07-29 International Business Machines Corporation Technique for efficiently transferring moderate amounts of data across address space boundary
US6314501B1 (en) * 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6154832A (en) 1998-12-04 2000-11-28 Advanced Micro Devices, Inc. Processor employing multiple register sets to eliminate interrupts
US6115779A (en) 1999-01-21 2000-09-05 Advanced Micro Devices, Inc. Interrupt management system having batch mechanism for handling interrupt events
US6397350B1 (en) 1999-02-19 2002-05-28 International Business Machines Corporation Method of providing direct data processing access using a queued direct input-output device
US6347341B1 (en) 1999-02-22 2002-02-12 International Business Machines Corporation Computer program product used for exchange and transfer of data having a siga vector and utilizing a queued direct input-output device
AU5141200A (en) 1999-06-01 2000-12-18 Microsoft Corporation Single logical clipboard for multiple computers
US6738977B1 (en) * 2000-05-31 2004-05-18 International Business Machines Corporation Class sharing between multiple virtual machines
JP2002073358A (ja) 2000-09-04 2002-03-12 Hitachi Ltd 仮想計算機主記憶のアクセス制御方法
US6920485B2 (en) * 2001-10-04 2005-07-19 Hewlett-Packard Development Company, L.P. Packet processing in shared memory multi-computer systems
GB2381092B (en) * 2001-10-19 2005-10-19 Ibm Object locking in a shared VM environment
US7131120B2 (en) * 2002-05-16 2006-10-31 Sun Microsystems, Inc. Inter Java virtual machine (JVM) resource locking mechanism
US7181744B2 (en) 2002-10-24 2007-02-20 International Business Machines Corporation System and method for transferring data between virtual machines or other computer entities

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1862494A (zh) * 2005-05-12 2006-11-15 微软公司 分区总线
CN101331461B (zh) * 2005-12-15 2010-12-01 国际商业机器公司 虚拟数据中心联合体中的远程性能监视器
CN100418319C (zh) * 2006-05-18 2008-09-10 清华大学 透明计算系统中端设备间数据的传送方法
CN101946244A (zh) * 2008-02-14 2011-01-12 国际商业机器公司 降低保留设备的访问竞争
CN101946244B (zh) * 2008-02-14 2012-12-12 国际商业机器公司 降低保留设备的访问竞争的方法和设备
CN102707986A (zh) * 2010-09-30 2012-10-03 微软公司 子分区与父分区之间的共享存储器
CN102707986B (zh) * 2010-09-30 2016-01-06 微软技术许可有限责任公司 子分区与父分区之间的共享存储器
CN103415838A (zh) * 2012-03-21 2013-11-27 广州市飞元信息科技有限公司 支持用户自定义的虚拟操作区域及其操作方法和系统架构
CN103415838B (zh) * 2012-03-21 2016-10-05 广州市飞元信息科技有限公司 支持用户自定义的虚拟操作空间系统及其操作方法和支撑系统
CN111868687A (zh) * 2018-03-20 2020-10-30 三菱电机株式会社 信息处理装置、方法及程序
CN111868687B (zh) * 2018-03-20 2021-09-17 三菱电机株式会社 信息处理装置、方法及程序

Also Published As

Publication number Publication date
KR20040036535A (ko) 2004-04-30
US20040083481A1 (en) 2004-04-29
US20070067775A1 (en) 2007-03-22
TWI249106B (en) 2006-02-11
TW200411403A (en) 2004-07-01
US20080046885A1 (en) 2008-02-21
CN100405351C (zh) 2008-07-23
KR100550197B1 (ko) 2006-02-08
US7299464B2 (en) 2007-11-20
US7181744B2 (en) 2007-02-20
US20040230972A1 (en) 2004-11-18
US7490324B2 (en) 2009-02-10
US7328437B2 (en) 2008-02-05

Similar Documents

Publication Publication Date Title
CN100405351C (zh) 在虚拟机或其他计算机实体之间传送数据的系统和方法
KR100934533B1 (ko) 연산 처리 시스템, 컴퓨터 시스템 상에서의 태스크 제어 방법, 및 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체
JP4012517B2 (ja) 仮想計算機環境におけるロックの管理
JP3882931B2 (ja) 仮想計算機環境におけるディスパッチ機能の管理
US11159605B2 (en) Hierarchical dynamic scheduling
US7000051B2 (en) Apparatus and method for virtualizing interrupts in a logically partitioned computer system
US8352938B2 (en) System, method and program to migrate a virtual machine
US6006247A (en) Method and system for scheduling threads and handling exceptions within a multiprocessor data processing system
KR100733852B1 (ko) 계산기 시스템
US7784060B2 (en) Efficient virtual machine communication via virtual machine queues
US5305455A (en) Per thread exception management for multitasking multithreaded operating system
US8032899B2 (en) Providing policy-based operating system services in a hypervisor on a computing system
US20110072426A1 (en) Speculative Notifications on Multi-core Platforms
WO2007024444A1 (en) Method and apparatus for supporting universal serial bus devices in a virtualized environment
CA1304513C (en) Multiple i/o bus virtual broadcast of programmed i/o instructions
JP5030647B2 (ja) 複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法、該プログラムを含むコンピュータ可読媒体、及び、並列コンピュータ・システム
US20230035594A1 (en) Managing peripherals in a containerized environment
JP7054688B2 (ja) 同期制御システムおよび同期制御方法
JP2746189B2 (ja) ファイルアクセス制御システム
JP2001184222A (ja) 分散処理装置、分散処理方法および記録媒体

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080723

Termination date: 20101023