CN106021142B - 用于在客户机之间共享存储器的方法和系统 - Google Patents
用于在客户机之间共享存储器的方法和系统 Download PDFInfo
- Publication number
- CN106021142B CN106021142B CN201610168124.XA CN201610168124A CN106021142B CN 106021142 B CN106021142 B CN 106021142B CN 201610168124 A CN201610168124 A CN 201610168124A CN 106021142 B CN106021142 B CN 106021142B
- Authority
- CN
- China
- Prior art keywords
- client computer
- computer
- memory
- service function
- client
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45545—Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
- Hardware Redundancy (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了用于在客户机之间共享存储器的方法和系统。在用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享存储器的方法中,一个或多个计算机处理器将虚拟设备提供给第一客户机,用于代理第一客户机和第二客户机之间的存储器访问,其中第一客户机与第二客户机相关联,以及其中第一客户机运行第一操作系统,且第二客户机运行第二操作系统。所述一个或多个计算机处理器将一个或多个设备相关功能发送给第二客户机,其中所述虚拟设备使得能够在第一客户机和第二客户机之间共享存储器。
Description
技术领域
本发明一般涉及数据处理系统的领域,并且更特别地涉及一种用于在运行于数据处理系统上的两个虚拟化系统之间共享存储器的方法、系统和计算机程序产品。
背景技术
虚拟化数据处理系统可以提供关于该处理系统的真实资源和模拟资源的多个视图。这样的视图可以被实现为虚拟机或所谓的客户机。每个客户机作为独立于其他客户机的虚拟的单独数据处理系统运行。提供独立数据处理系统的视图的组件被称为系统管理程序(hypervisor)。系统管理程序的责任范围包括资源管理、模拟(如果必要的话)、以及客户机之间的隔离。
偶尔,多个客户机遇到在一个任务上协作的需要,例如,一个客户机应该为另一个客户机分析数据。通常,通过经由虚拟网络在两个客户机之间拷贝数据来处理该通信。这允许促进熟知的编程范式。利用该方法,客户机的安全性和隔离仍可以被维持在高水平上。
发明内容
本发明的实施例公开了一种用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享存储器的方法、计算机程序产品和系统。所述方法可以包括:一个或多个计算机处理器将虚拟设备提供给第一客户机,用于代理第一客户机和第二客户机之间的存储器访问,其中第一客户机与第二客户机相关联,以及其中第一客户机运行第一操作系统,且第二客户机运行第二操作系统。所述一个或多个计算机处理器将一个或多个设备相关功能发送给第二客户机,其中虚拟设备使得能够在第一客户机和第二客户机之间共享存储器。
此外,一种用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享存储器的计算机程序产品可以包括:用于将虚拟设备提供给第一客户机,用于代理第一客户机和第二客户机之间的存储器访问的程序指令,其中第一客户机与第二客户机相关联,以及其中第一客户机运行第一操作系统,且第二客户机运行第二操作系统。程序指令将一个或多个设备相关功能发送给第二客户机,其中虚拟设备使得能够在第一客户机和第二客户机之间共享存储器。
此外,提出了一种用于执行数据处理程序的数据处理系统,包括用于执行上述方法的计算机可读程序指令。
附图说明
图1是在其中实现根据本发明的实施例的方法的环境的系统示图;
图2是根据本发明的实施例的用于在第一客户机和第二客户机之间共享存储器的方法的示例性过程的流程图;以及
图3是用于执行根据本发明的方法的数据处理系统的示例实施例。
具体实施方式
在附图中,利用相同的附图标记来指代相同的元件。附图仅仅是示意性的表示,而并非旨在描绘本发明的具体参数。此外,附图旨在仅描绘本发明的典型实施例,并且因此不应被视为限制本发明的范围。
本文描述的说明性实施例提供了一种用于在客户机之间共享存储器的方法、系统和计算机程序产品。说明性实施例有时在本文中使用仅仅为了描述的清楚起见而作为示例的特定技术来进行描述。说明性实施例可以用于在第一客户机和第二客户机之间共享存储器,第一客户机运行第一操作系统且第二客户机运行第二操作系统,其中两个操作系统可以为同一种,但是也可以是不同的操作系统。
在虚拟系统中,在第一客户机上运行的应用和在第二客户机上运行的应用都由相同的系统管理程序(即,相同的物理机)托管。由于本发明的实施例,提供了一种机制来在两个客户机之间共享数据,从而允许第二客户机在第一客户机的的数据上操作。
第一客户机识别对于第二应用而言将变得可用的数据,并调用第二客户机上的第二应用。系统管理程序将针对该调用的数据映射到第二应用的地址空间中,以用于立刻访问。在处理的同时,第二应用消费第二客户机的资源(例如,CPU、存储器、I/O),并且仍直接访问由第一客户机提供的数据。所提供的数据的地址转换允许使用较高级的语言对第二应用进行编程。
在近来的发展中,以低开销将应用的计算密集型部分移动到操作系统,以执行更有成本效益的计算。根据所提出的方法,可以避免将存储器中的数据结构从一个操作系统移动到另一个操作系统的拷贝操作。不需要使用必须执行拷贝操作从而导致延迟的机制(类似于远程过程调用(RPC)、TCP/IP套接字、或者甚至远程直接存储器访问(RDMA))。
消除该开销会显著地改善应用的总体性能。不需要操作系统或应用中的显著改变,就可以实现功能的封装。当根据本发明的实施例共享存储器时,不存在通信开销。由于不存在为共享存储器所需的拷贝操作,因此共享的数据量是与服务功能的调用无关的性能。可以通过从一客户机到另一客户机的功能调用来实现对存储器的共享。
图1描绘了在其中实现根据本发明的实施例的方法的环境的系统示图。该系统示图示出第一客户机10和第二客户机20,在图1中被描绘为它们的存储器区域,其中系统管理程序30被指派给第一客户机10和第二客户机20,并且从而使第一客户机10与第二客户机20相关联。第一客户机10运行第一操作系统12(例如,一般的大型机操作系统)以及包含应用特定数据15的第一应用16。第一操作系统12可以包括内核,其可以发现第二客户机20上的应用。第二客户机20运行第二操作系统22(例如,)以及第二应用26(例如,如图1中的应用辅助包(ACC,application assist cartridge),但是其可以表示任何分析算法)。第二应用26作为第二客户机20的用户空间代码28的一个应用而运行。系统管理程序30包含管理模块32以用于所有协作细节。应用管理模块32可以关于服务功能和诸如ACC之类的应用的使用,管理第一客户机10和第二客户机20之间的交互。系统调用40(SYSCALL)可以用于向第二操作系统22注册第二应用26。
所提出的用于在第一客户机10和第二客户机20之间共享存储器的方法被用于:使第一客户机10的数据15被第二客户机20使用并被第二客户机20操作,而无需将数据15物理地拷贝到第二客户机20。而是,第二应用26可以通过使用从第一客户机10到第二客户机20的、请求第二应用26的一些服务(例如,ACC服务功能)的功能调用,来操作数据15。
根据所提出的方法,系统管理程序30向虚拟设备14提供直接存储器访问。然后,第一客户机10可以向虚拟设备14宣告(announce)包含数据15的存储器区域,并开始对该数据调用设备特定功能。接着,系统管理程序30可以将先前宣告的存储器区域映射在第二客户机20的已经可用的存储器区域之上,并将设备相关功能分派给第二客户机20。以这种方式,由于虚拟设备14可以代理第一客户机10和第二客户机20之间的存储器访问,所以使得第一客户机10和第二客户机20能够经由虚拟设备14共享存储器。
虚拟设备14可以配置有外围组件互连(PCI)设备语义。因此,可以宣告存储器区域将被使用。用于传递数据的寄存器存在,以用于计算目的以及用于指向存储器区域的指针。中断机制可以用于操作的完成和失败。
因此,可能的是,以具有将被第一应用16使用的第二应用26的功能的通用外部板(external board)的方式使用第二应用26的服务,其中第二应用26可以在第一应用16的数据15上操作并修改数据15。以这种方式,将第二应用26的代码的功能提供给第一应用16的数据15。
当第二应用26的服务功能与存储器区域一起工作时,服务功能的代码可以包含当存储器区域被访问时的定义。编译器/特殊数据结构可以转换存储器区域访问中的地址。代码还实现存储器区域内的指针运算。第二客户机20获得由第一客户机10传递的存储器区域的基本偏移。
虚拟设备14的基地址寄存器可以被改变以将第一客户机10的指针转换成第二客户机20中的指针位置,以便使用正确的存储器数据。这可以通过例如数据类型的C++封装、或者基于存储器区域的数据的编译器指针运算的改变来实现。
可以通过第二操作系统22中的调度器24的请求队列来控制对第二客户机20的访问。如果许多客户机在具有被宣告的许多服务的数据处理系统上操作,则这可能会是有用的。调度器24可以作为第二操作系统22的内核的一部分操作。
第一客户机10的存储器的映射可以被实现为只读映射,使得第二客户机20仅可以读取数据15,并且仅仅允许第一客户机10在数据15上写入。这对于安全相关系统而言可能会变得重要。第二客户机20的存储区的写保护可以由第一客户机10请求、并由系统管理程序30实施。
系统管理程序30可以提供关于第二客户机20的功能的统计使用的信息。这通过由系统管理程序30的管理功能从数据和服务的使用中所涉及的所有服务和客户机收集使用信息来实现。该信息可以用于记账目的、监测、用于调试的跟踪、登录、等等。
图2描绘了根据本发明的实施例的用于在第一客户机10和第二客户机20之间共享存储器的方法的示例性过程的流程图。数据15可以在第一客户机10上运行的第一应用16与第二客户机20上运行的第二应用26之间共享,包括图2中解释的步骤。
首先,在步骤S200中,向第二操作系统22注册在第二客户机20上运行的第二应用26,以便提供可由其他实体调用的服务功能。第二客户机20的第二应用26(例如,AAC)通过系统调用,宣告服务功能以及识别令牌。第二操作系统22的内核于是知道:服务功能由第二应用26进行服务。第二应用26通过一阻塞系统调用(blocking system call)40来宣告其准备好服务于系统功能:第二应用26的代码将不被进一步执行,而是挂起,直至内核再次调度第二应用26(由外部事件触发),从而从系统调用40返回。用于该服务功能的任何调度特征(例如,要运行哪些处理器或者要使用什么样的优先级)是从第二应用26的属性得出的。如果一服务功能的若干实例将被并行服务,则若干线程可以发出阻塞系统调用40。如果所述服务功能的不同服务将被提供,则若干进程可以在每AAC的基础上运行该逻辑。
接着,在步骤S202中,第二操作系统22向系统管理程序30宣告服务功能的可用性。一旦该服务的另一个消费者请求该服务功能的执行,系统管理程序30就代表该消费者将特殊的半虚拟化中断(paravirtualized interrupt)注入第二客户机20中。在一个实施例中,第二操作系统22向系统管理程序30注册中断处理程序(interrupt handler),以用于服务功能诸如AAC请求。第二操作系统22的内核使用系统管理程序调用(例如,半虚拟化指令)以宣告可用性。一旦第二应用26废除服务功能的宣告或者当第二应用26终止时,内核撤销来自系统管理程序30的服务功能宣告。
在步骤S204中,系统管理程序30向第一客户机10宣告服务功能。系统管理程序30接受来自第二操作系统22的服务功能注册,并向一些或所有其他客户机提供AAC。其他客户机可以探查有效服务功能或者传送对有效服务功能的查询,并消费它们。策略、隔离/多租户、积压(backlog)、优先级和访问限制可以应用。标准服务定位协议可以用于实现注册和发现机制。
接着,在步骤S206中,在第一客户机10上运行的第一应用16通过发现系统管理程序30的宣告来确定服务功能是可用的。可以使用如由步骤S204提供的服务定位机制。如果第一客户机10意图使用服务功能,那么第一客户机10可以要求系统管理程序30使得服务功能可用。如果第一客户机10的第一操作系统12首先发现了服务功能,那么第一操作系统12可以使其应用能够被发现。系统管理程序30例如经由至第一客户机10的热插拔虚拟设备14,使得作为虚拟(PCI)设备14的服务功能可用。第一操作系统12可以可选地限制对服务功能的用户空间访问。
在步骤S208中,第一应用16从系统管理程序30请求服务功能。来自第一应用16的参数可以作为“传值调用(call-by-value)”参数被传递给第二客户机20。第一应用16宣告将在完成服务功能时调用的回调函数(call back function)。第一应用16可以宣告其存储区的区域,以用于由服务功能直接访问。第一应用16异步地调用服务功能的服务(即,系统调用40为非阻塞的),第一应用16继续运行,并且当服务功能完成时,第一应用16被通知(即,在先前注册的回调函数上被回调)。第一操作系统12将服务功能请求传递给系统管理程序30。
然后,在步骤S210中,系统管理程序30向第二客户机20告知第一应用16对服务功能的请求。系统管理程序30提供虚拟设备14。虚拟设备14例如在配置空间中承载所请求的服务功能的标识符和传值调用参数。虚拟设备14还提供基地址寄存器,第二客户机20可以使用该基地址寄存器来直接访问第一应用16的存储器。系统管理程序30将所宣告的第一客户机10的存储器映射在第二客户机20的存储器之上。基地址寄存器可以包含存储器区域在第一应用16的地址空间中的偏移。
接着在步骤S212中,第二客户机20的第二操作系统22通过接收特殊的半虚拟化中断,来确定系统管理程序30代表第一应用16对服务功能的请求已经发生。第二操作系统22可以随后搜索可用的服务功能进程,即准备在该服务功能上工作的阻塞进程。如果一个也没有发现,但服务功能的服务存在,那么可以将该服务功能排入队列以在之后处理。第二操作系统22随后将与服务功能请求相关联的存储器区域映射到将在服务功能上工作的进程的地址空间中。第二操作系统22还向第二客户机20的服务功能进程宣告第一客户机10的存储器的基地址和大小。第二操作系统22将服务功能参数提供给AAC进程,并调度服务功能进程,从而从其阻塞系统调用40返回。
在步骤S214中,第二应用26对来自第一应用16的请求进行服务。计算发生,直至服务功能请求的完成。第一应用16的输出的存储器区域由系统管理程序30映射到第二应用26的进程地址空间中。基地址寄存器指定存储器区域在第一应用16的地址空间中的偏移。这可以用于跟踪指针。指针解引用可以通过编译器支持而被隐式地完成,或者通过使用特定代码(例如经由库)而被明确地完成。在完成时,服务功能代码返回虚拟设备14的设备寄存器中的潜在返回数据(“通过值”)。另外,对第一客户机10的存储器的直接更新可能已经发生。服务功能进程可以向第二操作系统22告知服务功能处理能力的更新后的可用性,或者针对该识别而终止服务功能的服务。
接着在步骤S216中,第二客户机20的第二操作系统22向系统管理程序30通知请求的完成。第二操作系统22可以撤回对存储器的访问,例如移除存储器映射,并且可以调用系统管理程序30以指示服务功能的完成。如果另一个服务功能请求处于待决,则可以处理下一个服务功能请求。
在步骤S218中,系统管理程序30向第一客户机10的第一操作系统12指示请求的完成。如果系统管理程序30认识到服务功能请求完成,那么系统管理程序30通知第一操作系统12并向第一客户机10指示完成(例如,经由虚拟设备14上的中断)。
在步骤S220中,第一客户机10的第一操作系统12向第一应用16告知请求的完成。第一操作系统12调用第一客户机10的用户空间代码中的回调函数,以便通过通知第一应用16来提供服务功能完成的指示。在图2中描述的过程期间,已经直接更新了第一客户机10的存储器。附加的传值调用返回值可通过虚拟设备寄存器来访问。
现在参考图3,其示出数据处理系统310的示例的示意图。数据处理系统310仅是适合的数据处理系统的一个示例,并且并非旨在暗示关于本文描述的本发明的实施例的使用范围或功能范围的任何限制。无论如何,数据处理系统310能够实现和/或执行上面在本文中阐述的功能中的任一个。
在数据处理系统310中,存在计算机系统/服务器312,其与许多其他通用或专用计算系统环境或配置一起操作。可能适合于与计算机系统/服务器312一起使用的熟知的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机系统、大型计算机系统、以及包括以上系统或设备中的任一种的分布式云计算环境、等等。
计算机系统/服务器312可以在由计算机系统执行的诸如程序模块之类的计算机系统可执行指令的一般背景中描述。通常,程序模块可以包括例程、程序、对象、组件、逻辑、数据结构等,其执行特定任务或实现特定抽象数据类型。计算机系统/服务器312可以在分布式云计算环境中实践,在所述分布式云计算环境中,任务由通过通信网络连接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图3中所示,数据处理系统310中的计算机系统/服务器312以通用计算设备的形式示出。计算机系统/服务器312的组件可以包括但不限于一个或多个处理器或处理单元316,系统存储器328,以及将包括系统存储器328在内的各种系统组件耦合到处理单元316的总线318。
总线318表示若干类型的总线结构中的任一种中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用多种总线架构中的任一种的处理器或本地总线。通过示例的方式,并且并非进行限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线。
计算机系统/服务器312通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器312可访问的任何可用介质,并且其包括易失性和非易失性介质、可移除和不可移除介质。
系统存储器328可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)330和/或高速缓冲存储器332。计算机系统/服务器312还可以包括其他可移除/不可移除、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统334可以被提供用于从不可移除、非易失性磁介质(未示出且通常被称为“硬驱”)读取和向其写入。尽管未示出,但是可以提供用于从可移除、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动,以及用于从诸如CD-ROM、DVD-ROM或其他光学介质之类的可移除、非易失性光盘读取或向其写入的光盘驱动。在这样的实例中,各自可以通过一个或多个数据介质接口连接到总线318。如将在下面进一步描绘和描述的那样,系统存储器328可以包括具有一组(例如,至少一个)程序模块的至少一个程序产品,所述程序模块配置成执行本发明的实施例的功能。
通过示例的方式并且并非进行限制,具有一组(至少一个)程序模块342的程序/实用工具340、以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以被存储在系统存储器328中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或其某种组合可以包括联网环境的实现。程序模块342通常执行如本文描述的本发明的实施例的功能和/或方法。
计算机系统/服务器312还可以与以下设备通信:一个或多个外部设备314,诸如键盘、指点设备、显示器324等;使用户能够与计算机系统/服务器312交互的一个或多个设备;以及/或者使计算机系统/服务器312能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)。这样的通信可以经由输入/输出(I/O)接口322发生。此外,计算机系统/服务器312可以经由网络适配器320与一个或多个网络诸如局域网(LAN)、一般广域网(WAN)和/或公共网(例如,因特网)通信。如图所示,网络适配器320经由总线318与计算机系统/服务器312的其他组件通信。应当理解的是,尽管未示出,但其他硬件和/或软件组件可以与计算机系统/服务器312结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器和数据归档存储系统等。
本文中描述的程序是基于在本发明的特定实施例中为其实现这些程序的应用来识别的。然而,应当理解的是,本文中对任何特定程序的命名仅仅是出于方便的目的而被使用的,并且因此本发明不应局限于唯一地用于由这样的命名识别和/或暗示的任何特定应用。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是任何可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本发明的各个实施例的描述已经出于举例说明的目的而被呈现,而并非旨在是无遗漏的或局限于所公开的实施例。在不脱离本发明的范围和精神的情况下,许多改型和变型对于本领域普通技术人员来说将是明显的。本文所使用的术语被选择为最佳地解释所述实施例的原理、实际应用、或者相对于在市场中发现的技术的技术改进,或者使本领域其他普通技术人员能够理解本文公开的实施例。
Claims (9)
1.一种用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享存储器的方法,所述方法包括:
由一个或多个计算机处理器接收第二客户机的服务功能的可用性的宣告,其中,向第二操作系统注册的在所述第二客户机上运行的第二应用提供该服务功能;
由所述一个或多个计算机处理器将该第二客户机的服务功能的可用性的宣告发送给在向第一操作系统注册的第一客户机上运行的第一应用;
由所述一个或多个计算机处理器响应于从第一客户机接收对该第二客户机的服务功能的请求,利用基地址寄存器,将第一客户机的宣告的存储器映射在第二客户机的存储器区域之上;和
由所述一个或多个计算机处理器改变基地址寄存器以将与该第一客户机的服务功能相关联的一个或多个先前宣告的存储器区域的指针转换成第二客户机中的存储器区域的指针位置。
2.根据权利要求1所述的方法,还包括:由所述一个或多个计算机处理器向所述第二操作系统注册在所述第二客户机上运行的所述第二应用,以便通过阻塞系统调用提供服务功能。
3.根据权利要求1所述的方法,还包括:
由所述一个或多个计算机处理器调用半虚拟化功能;以及
由所述一个或多个计算机处理器注册中断处理程序。
4.根据权利要求1所述的方法,其中所述从第一客户机接收对该第二客户机的服务功能的请求还包括:由所述一个或多个计算机处理器利用非阻塞系统调用。
5.根据权利要求1所述的方法,其中,所述将第一客户机的宣告的存储器映射在第二客户机的存储器区域之上为只读映射。
6.根据权利要求1所述的方法,还包括:
由所述一个或多个计算机处理器接收向所述第一应用通知所述请求的完成的通知;
由所述一个或多个计算机处理器提供回调函数。
7.根据权利要求1所述的方法,还包括:由所述一个或多个计算机处理器通过所述第二操作系统中的调度器的请求队列,控制对所述第二客户机的访问。
8.根据权利要求1所述的方法,还包括:由所述一个或多个计算机处理器经由系统管理程序,提供有关所述第二客户机的功能的统计使用的信息。
9.一种用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享存储器的计算机系统,所述计算机系统包括:
一个或多个计算机处理器;
一个或多个计算机可读存储设备;
存储在所述一个或多个计算机可读存储设备上的程序指令,用于由所述一个或多个计算机处理器中的至少一个执行,以用于执行权利要求1至8中任一项的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/666566 | 2015-03-24 | ||
US14/666,566 US9606827B2 (en) | 2015-03-24 | 2015-03-24 | Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106021142A CN106021142A (zh) | 2016-10-12 |
CN106021142B true CN106021142B (zh) | 2019-03-22 |
Family
ID=56975331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610168124.XA Active CN106021142B (zh) | 2015-03-24 | 2016-03-23 | 用于在客户机之间共享存储器的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9606827B2 (zh) |
CN (1) | CN106021142B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11157460B2 (en) * | 2017-12-06 | 2021-10-26 | International Business Machines Corporation | Code management system |
CN110737398B (zh) * | 2018-07-20 | 2023-09-01 | 伊姆西Ip控股有限责任公司 | 协调访问操作的方法、设备和计算机程序产品 |
CN112416629B (zh) * | 2020-12-10 | 2023-07-25 | 深圳市富途网络科技有限公司 | 数据互通方法、系统及存储介质 |
CN113507464B (zh) * | 2021-07-06 | 2023-10-13 | 深圳市吉芯微半导体有限公司 | 基于虚拟设备的数据访问方法、装置、设备及存储介质 |
CN115580644B (zh) * | 2022-12-07 | 2023-04-07 | 北京小米移动软件有限公司 | 宿主机内客户系统间的通讯方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1696902A (zh) * | 2004-05-11 | 2005-11-16 | 国际商业机器公司 | 迁移虚拟机的系统、方法和程序 |
WO2008152967A1 (ja) * | 2007-06-12 | 2008-12-18 | Nec Corporation | 情報処理装置、実行環境転送方法及びそのプログラム |
US7539987B1 (en) * | 2008-03-16 | 2009-05-26 | International Business Machines Corporation | Exporting unique operating system features to other partitions in a partitioned environment |
CN102667714A (zh) * | 2009-11-25 | 2012-09-12 | 飞思卡尔半导体公司 | 支持访问由操作系统环境外的资源提供的功能的方法和系统 |
WO2014140953A1 (en) * | 2013-03-12 | 2014-09-18 | International Business Machines Corporation | Systems and methods to offload hardware support using a hypervisor subpartition |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7222332B2 (en) | 2002-10-24 | 2007-05-22 | International Business Machines Corporation | Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture |
US20050086656A1 (en) | 2003-10-20 | 2005-04-21 | Gemstone Systems, Inc. | Methods and systems for inter-process copy sharing of data objects |
US7739684B2 (en) * | 2003-11-25 | 2010-06-15 | Intel Corporation | Virtual direct memory access crossover |
US7478204B2 (en) * | 2004-04-29 | 2009-01-13 | International Business Machines Corporation | Efficient sharing of memory between applications running under different operating systems on a shared hardware system |
US8856781B2 (en) * | 2006-09-14 | 2014-10-07 | Intel Corporation | Method and apparatus for supporting assignment of devices of virtual machines |
JP2010514028A (ja) | 2006-12-22 | 2010-04-30 | バーチャルロジックス エスエイ | 単一データ処理を共有するために複数の実行環境を有効化するシステム |
US8195897B2 (en) | 2008-06-09 | 2012-06-05 | International Business Machines Corporation | Migrating memory data between partitions |
US8490094B2 (en) | 2009-02-27 | 2013-07-16 | International Business Machines Corporation | Non-uniform memory access (NUMA) enhancements for shared logical partitions |
US20110113426A1 (en) | 2009-11-09 | 2011-05-12 | Hsiang-Tsung Kung | Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods |
US8463980B2 (en) | 2010-09-30 | 2013-06-11 | Microsoft Corporation | Shared memory between child and parent partitions |
US8892802B2 (en) * | 2012-01-01 | 2014-11-18 | International Business Machines Corporation | Enhancing interrupt handling in a virtual environment |
-
2015
- 2015-03-24 US US14/666,566 patent/US9606827B2/en active Active
-
2016
- 2016-03-23 CN CN201610168124.XA patent/CN106021142B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1696902A (zh) * | 2004-05-11 | 2005-11-16 | 国际商业机器公司 | 迁移虚拟机的系统、方法和程序 |
WO2008152967A1 (ja) * | 2007-06-12 | 2008-12-18 | Nec Corporation | 情報処理装置、実行環境転送方法及びそのプログラム |
US7539987B1 (en) * | 2008-03-16 | 2009-05-26 | International Business Machines Corporation | Exporting unique operating system features to other partitions in a partitioned environment |
CN102667714A (zh) * | 2009-11-25 | 2012-09-12 | 飞思卡尔半导体公司 | 支持访问由操作系统环境外的资源提供的功能的方法和系统 |
WO2014140953A1 (en) * | 2013-03-12 | 2014-09-18 | International Business Machines Corporation | Systems and methods to offload hardware support using a hypervisor subpartition |
Also Published As
Publication number | Publication date |
---|---|
CN106021142A (zh) | 2016-10-12 |
US20160283258A1 (en) | 2016-09-29 |
US9606827B2 (en) | 2017-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106021142B (zh) | 用于在客户机之间共享存储器的方法和系统 | |
US11593252B2 (en) | Agentless distributed monitoring of microservices through a virtual switch | |
US10776144B2 (en) | Address space management with respect to a coherent accelerator processor interface architecture | |
US11627112B2 (en) | Socket transferring for HPC networks using kernel tracing | |
US11605016B2 (en) | Quantum computing service supporting local execution of hybrid algorithms | |
US8572614B2 (en) | Processing workloads using a processor hierarchy system | |
US20070011291A1 (en) | Grid automation bus to integrate management frameworks for dynamic grid management | |
US11605033B2 (en) | Quantum computing task translation supporting multiple quantum computing technologies | |
US9762672B2 (en) | Dynamic node group allocation | |
US11388164B2 (en) | Distributed application programming interface whitelisting | |
US11704715B2 (en) | Quantum computing service supporting multiple quantum computing technologies | |
US11650869B2 (en) | Quantum computing service with local edge devices supporting multiple quantum computing technologies | |
US9110695B1 (en) | Request queues for interactive clients in a shared file system of a parallel computing system | |
US10169238B2 (en) | Memory access for exactly-once messaging | |
CN109218356B (zh) | 管理服务器上有状态应用的方法和设备 | |
JP2019523501A (ja) | リスク識別方法、リスク識別装置、クラウドリスク識別装置及びシステム | |
US10664386B2 (en) | Remotely debugging an operating system via messages including a list back-trace of applications that disable hardware interrupts | |
Gundu et al. | Real-time cloud-based load balance algorithms and an analysis | |
US20190310856A1 (en) | Executing instructions based on a shared physical register | |
Cao et al. | An efficient cloud-based elastic rdma protocol for hpc applications | |
US9612860B2 (en) | Sharing memory between guests by adapting a base address register to translate pointers to share a memory region upon requesting for functions of another guest | |
EP4066174A1 (en) | Quantum computing service supporting multiple quantum computing technologies | |
US10812406B2 (en) | Assigning processing elements to stream computing servers | |
US11792289B2 (en) | Live socket redirection | |
US20210281629A1 (en) | Processing of web-based applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |