用于在客户机之间共享存储器的方法和系统的制作方法

文档序号:10654496阅读:503来源:国知局
用于在客户机之间共享存储器的方法和系统的制作方法
【专利摘要】本申请提供了用于在客户机之间共享存储器的方法和系统。在用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享存储器的方法中,一个或多个计算机处理器将虚拟设备提供给第一客户机,用于代理第一客户机和第二客户机之间的存储器访问,其中第一客户机与第二客户机相关联,以及其中第一客户机运行第一操作系统,且第二客户机运行第二操作系统。所述一个或多个计算机处理器将一个或多个设备相关功能发送给第二客户机,其中所述虚拟设备使得能够在第一客户机和第二客户机之间共享存储器。
【专利说明】
用于在客户机么间共享存储器的方法和系统
技术领域
[0001] 本发明一般设及数据处理系统的领域,并且更特别地设及一种用于在运行于数据 处理系统上的两个虚拟化系统之间共享存储器的方法、系统和计算机程序产品。
【背景技术】
[0002] 虚拟化数据处理系统可W提供关于该处理系统的真实资源和模拟资源的多个视 图。运样的视图可W被实现为虚拟机或所谓的客户机。每个客户机作为独立于其他客户机 的虚拟的单独数据处理系统运行。提供独立数据处理系统的视图的组件被称为系统管理程 序化ypervisor)。系统管理程序的责任范围包括资源管理、模拟(如果必要的话)、w及客户 机之间的隔离。
[0003] 偶尔,多个客户机遇到在一个任务上协作的需要,例如,一个客户机应该为另一个 客户机分析数据。通常,通过经由虚拟网络在两个客户机之间拷贝数据来处理该通信。运允 许促进熟知的编程范式。利用该方法,客户机的安全性和隔离仍可W被维持在高水平上。

【发明内容】

[0004] 本发明的实施例公开了一种用于在都运行于数据处理系统上的第一客户机和第 二客户机之间共享存储器的方法、计算机程序产品和系统。所述方法可W包括:一个或多个 计算机处理器将虚拟设备提供给第一客户机,用于代理第一客户机和第二客户机之间的存 储器访问,其中第一客户机与第二客户机相关联,W及其中第一客户机运行第一操作系统, 且第二客户机运行第二操作系统。所述一个或多个计算机处理器将一个或多个设备相关功 能发送给第二客户机,其中虚拟设备使得能够在第一客户机和第二客户机之间共享存储 器。
[0005] 此外,一种用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享 存储器的计算机程序产品可W包括:用于将虚拟设备提供给第一客户机,用于代理第一客 户机和第二客户机之间的存储器访问的程序指令,其中第一客户机与第二客户机相关联, W及其中第一客户机运行第一操作系统,且第二客户机运行第二操作系统。程序指令将一 个或多个设备相关功能发送给第二客户机,其中虚拟设备使得能够在第一客户机和第二客 户机之间共享存储器。
[0006] 此外,提出了一种用于执行数据处理程序的数据处理系统,包括用于执行上述方 法的计算机可读程序指令。
【附图说明】
[0007] 图1是在其中实现根据本发明的实施例的方法的环境的系统示图;
[000引图2是根据本发明的实施例的用于在第一客户机和第二客户机之间共享存储器的 方法的示例性过程的流程图;W及
[0009]图3是用于执行根据本发明的方法的数据处理系统的示例实施例。
【具体实施方式】
[0010] 在附图中,利用相同的附图标记来指代相同的元件。附图仅仅是示意性的表示,而 并非旨在描绘本发明的具体参数。此外,附图旨在仅描绘本发明的典型实施例,并且因此不 应被视为限制本发明的范围。
[0011] 本文描述的说明性实施例提供了一种用于在客户机之间共享存储器的方法、系统 和计算机程序产品。说明性实施例有时在本文中使用仅仅为了描述的清楚起见而作为示例 的特定技术来进行描述。说明性实施例可W用于在第一客户机和第二客户机之间共享存储 器,第一客户机运行第一操作系统且第二客户机运行第二操作系统,其中两个操作系统可 W为同一种,但是也可W是不同的操作系统。
[0012] 在虚拟系统中,在第一客户机上运行的应用和在第二客户机上运行的应用都由相 同的系统管理程序(即,相同的物理机)托管。由于本发明的实施例,提供了一种机制来在两 个客户机之间共享数据,从而允许第二客户机在第一客户机的的数据上操作。
[0013] 第一客户机识别对于第二应用而言将变得可用的数据,并调用第二客户机上的第 二应用。系统管理程序将针对该调用的数据映射到第二应用的地址空间中,W用于立刻访 问。在处理的同时,第二应用消费第二客户机的资源(例如,CPU、存储器、1/0),并且仍直接 访问由第一客户机提供的数据。所提供的数据的地址转换允许使用较高级的语言对第二应 用进行编程。
[0014] 在近来的发展中,W低开销将应用的计算密集型部分移动到操作系统,W执行更 有成本效益的计算。根据所提出的方法,可W避免将存储器中的数据结构从一个操作系统 移动到另一个操作系统的拷贝操作。不需要使用必须执行拷贝操作从而导致延迟的机制 (类似于远程过程调用(RPC)、TCP^P套接字、或者甚至远程直接存储器访问(RDMA))。
[0015] 消除该开销会显著地改善应用的总体性能。不需要操作系统或应用中的显著改 变,就可W实现功能的封装。当根据本发明的实施例共享存储器时,不存在通信开销。由于 不存在为共享存储器所需的拷贝操作,因此共享的数据量是与服务功能的调用无关的性 能。可W通过从一客户机到另一客户机的功能调用来实现对存储器的共享。
[0016] 图1描绘了在其中实现根据本发明的实施例的方法的环境的系统示图。该系统示 图示出第一客户机10和第二客户机20,在图1中被描绘为它们的存储器区域,其中系统管理 程序30被指派给第一客户机10和第二客户机20,并且从而使第一客户机10与第二客户机20 相关联。第一客户机10运行第一操作系统12(例如,一般的大型机操作系统)W及包含应用 特定数据15的第一应用16。第一操作系统12可W包括内核,其可W发现第二客户机20上的 应用。第二客户机20运行第二操作系统22(例如,Linux?似及第二应用26(例如,如图1中 的应用辅助包(ACC,application assist cartridge),但是其可W表示任何分析算法)。第 二应用26作为第二客户机20的用户空间代码28的一个应用而运行。系统管理程序30包含管 理模块32W用于所有协作细节。应用管理模块32可W关于服务功能和诸如ACC之类的应用 的使用,管理第一客户机10和第二客户机20之间的交互。系统调用40(SYSCA化)可W用于向 第二操作系统22注册第二应用26。
[0017] 所提出的用于在第一客户机10和第二客户机20之间共享存储器的方法被用于:使 第一客户机10的数据15被第二客户机20使用并被第二客户机20操作,而无需将数据15物理 地拷贝到第二客户机20。而是,第二应用26可W通过使用从第一客户机10到第二客户机20 的、请求第二应用26的一些服务(例如,ACC服务功能)的功能调用,来操作数据15。
[0018] 根据所提出的方法,系统管理程序30向虚拟设备14提供直接存储器访问。然后,第 一客户机10可W向虚拟设备14宣告(announce)包含数据15的存储器区域,并开始对该数据 调用设备特定功能。接着,系统管理程序30可W将先前宣告的存储器区域映射在第二客户 机20的已经可用的存储器区域之上,并将设备相关功能分派给第二客户机20。W运种方式, 由于虚拟设备14可W代理第一客户机10和第二客户机20之间的存储器访问,所W使得第一 客户机10和第二客户机20能够经由虚拟设备14共享存储器。
[0019] 虚拟设备14可W配置有外围组件互连(PCI)设备语义。因此,可W宣告存储器区域 将被使用。用于传递数据的寄存器存在,W用于计算目的W及用于指向存储器区域的指针。 中断机制可W用于操作的完成和失败。
[0020] 因此,可能的是,W具有将被第一应用16使用的第二应用26的功能的通用外部板 (external board)的方式使用第二应用26的服务,其中第二应用26可W在第一应用16的数 据15上操作并修改数据15。W运种方式,将第二应用26的代码的功能提供给第一应用16的 数据15。
[0021] 当第二应用26的服务功能与存储器区域一起工作时,服务功能的代码可W包含当 存储器区域被访问时的定义。编译器/特殊数据结构可W转换存储器区域访问中的地址。代 码还实现存储器区域内的指针运算。第二客户机20获得由第一客户机10传递的存储器区域 的基本偏移。
[0022] 虚拟设备14的基地址寄存器可W适应于将第一客户机10的指针转换成第二客户 机20中的指针位置,W便使用正确的存储器数据。运可W通过例如数据类型的C++封装、或 者基于存储器区域的数据的编译器指针运算的改变来实现。
[0023] 可W通过第二操作系统22中的调度器24的请求队列来控制对第二客户机20的访 问。如果许多客户机在具有被宣告的许多服务的数据处理系统上操作,则运可能会是有用 的。调度器24可W作为第二操作系统22的内核的一部分操作。
[0024] 第一客户机10的存储器的映射可W被实现为只读映射,使得第二客户机20仅可W 读取数据15,并且仅仅允许第一客户机10在数据15上写入。运对于安全相关系统而言可能 会变得重要。第二客户机20的存储区的写保护可W由第一客户机10请求、并由系统管理程 序30实施。
[0025] 系统管理程序30可W提供关于第二客户机20的功能的统计使用的信息。运通过由 系统管理程序30的管理功能从数据和服务的使用中所设及的所有服务和客户机收集使用 信息来实现。该信息可W用于记账目的、监测、用于调试的跟踪、登录、等等。
[0026] 图2描绘了根据本发明的实施例的用于在第一客户机10和第二客户机20之间共享 存储器的方法的示例性过程的流程图。数据15可W在第一客户机10上运行的第一应用16与 第二客户机20上运行的第二应用26之间共享,包括图2中解释的步骤。
[0027] 首先,在步骤S200中,向第二操作系统22注册在第二客户机20上运行的第二应用 26, W便提供可由其他实体调用的服务功能。第二客户机20的第二应用26(例如,AAC)通过 系统调用,宣告服务功能W及识别令牌。第二操作系统22的内核于是知道:服务功能由第二 应用26进行服务。第二应用26通过一阻塞系统调用(blocking system call)40来宣告其准 备好服务于系统功能:第二应用26的代码将不被进一步执行,而是挂起,直至内核再次调度 第二应用26(由外部事件触发),从而从系统调用40返回。用于该服务功能的任何调度特征 (例如,要运行哪些处理器或者要使用什么样的优先级)是从第二应用26的属性得出的。如 果一服务功能的若干实例将被并行服务,则若干线程可W发出阻塞系统调用40。如果所述 服务功能的不同服务将被提供,则若干进程可W在每AAC的基础上运行该逻辑。
[00%]接着,在步骤S202中,第二操作系统22向系统管理程序30宣告服务功能的可用性。 一旦该服务的另一个消费者请求该服务功能的执行,系统管理程序30就代表该消费者将特 殊的半虚拟化中断(paravirtualized interrupt)注入第二客户机20中。在一个实施例中, 第二操作系统22向系统管理程序30注册中断处理程序(interrupt handler), W用于服务 功能诸如AA村青求。第二操作系统22的内核使用系统管理程序调用(例如,半虚拟化指令)W 宣告可用性。一旦第二应用26废除服务功能的宣告或者当第二应用26终止时,内核撤销来 自系统管理程序30的服务功能宣告。
[0029] 在步骤S204中,系统管理程序30向第一客户机10宣告服务功能。系统管理程序30 接受来自第二操作系统22的服务功能注册,并向一些或所有其他客户机提供AAC。其他客户 机可W探查有效服务功能或者传送对有效服务功能的查询,并消费它们。策略、隔离/多租 户、积压(backlog)、优先级和访问限制可W应用。标准服务定位协议可W用于实现注册和 发现机制。
[0030] 接着,在步骤S206中,在第一客户机10上运行的第一应用16通过发现系统管理程 序30的宣告来确定服务功能是可用的。可W使用如由步骤S204提供的服务定位机制。如果 第一客户机10意图使用服务功能,那么第一客户机10可W要求系统管理程序30使得服务功 能可用。如果第一客户机10的第一操作系统12首先发现了服务功能,那么第一操作系统12 可W使其应用能够被发现。系统管理程序30例如经由至第一客户机10的热插拔虚拟设备 14,使得作为虚拟(PCI)设备14的服务功能可用。第一操作系统12可W可选地限制对服务功 能的用户空间访问。
[0031] 在步骤S208中,第一应用16从系统管理程序30请求服务功能。来自第一应用16的 参数可W作为"传值调用(call-by-value)"参数被传递给第二客户机20。第一应用16宣告 将在完成服务功能时调用的回调函数(call back化nction)。第一应用16可W宣告其存储 区的区域,W用于由服务功能直接访问。第一应用16异步地调用服务功能的服务(即,系统 调用40为非阻塞的),第一应用16继续运行,并且当服务功能完成时,第一应用16被通知 (即,在先前注册的回调函数上被回调)。第一操作系统12将服务功能请求传递给系统管理 程序30。
[0032] 然后,在步骤S210中,系统管理程序30向第二客户机20告知第一应用16对服务功 能的请求。系统管理程序30提供虚拟设备14。虚拟设备14例如在配置空间中承载所请求的 服务功能的标识符和传值调用参数。虚拟设备14还提供基地址寄存器,第二客户机20可W 使用该基地址寄存器来直接访问第一应用16的存储器。系统管理程序30将所宣告的第一客 户机10的存储器映射在第二客户机20的存储器之上。基地址寄存器可W包含存储器区域在 第一应用16的地址空间中的偏移。
[0033] 接着在步骤S212中,第二客户机20的第二操作系统22通过接收特殊的半虚拟化中 断,来确定系统管理程序30代表第一应用16对服务功能的请求已经发生。第二操作系统22 可W随后捜索可用的服务功能进程,即准备在该服务功能上工作的阻塞进程。如果一个也 没有发现,但服务功能的服务存在,那么可W将该服务功能排入队列W在之后处理。第二操 作系统22随后将与服务功能请求相关联的存储器区域映射到将在服务功能上工作的进程 的地址空间中。第二操作系统22还向第二客户机20的服务功能进程宣告第一客户机10的存 储器的基地址和大小。第二操作系统22将服务功能参数提供给AAC进程,并调度服务功能进 程,从而从其阻塞系统调用40返回。
[0034] 在步骤S214中,第二应用26对来自第一应用16的请求进行服务。计算发生,直至服 务功能请求的完成。第一应用16的输出的存储器区域由系统管理程序30映射到第二应用26 的进程地址空间中。基地址寄存器指定存储器区域在第一应用16的地址空间中的偏移。运 可W用于跟踪指针。指针解引用可W通过编译器支持而被隐式地完成,或者通过使用特定 代码(例如经由库)而被明确地完成。在完成时,服务功能代码返回虚拟设备14的设备寄存 器中的潜在返回数据("通过值")。另外,对第一客户机10的存储器的直接更新可能已经发 生。服务功能进程可W向第二操作系统22告知服务功能处理能力的更新后的可用性,或者 针对该识别而终止服务功能的服务。
[0035] 接着在步骤S216中,第二客户机20的第二操作系统22向系统管理程序30通知请求 的完成。第二操作系统22可W撤回对存储器的访问,例如移除存储器映射,并且可W调用系 统管理程序30W指示服务功能的完成。如果另一个服务功能请求处于待决,则可W处理下 一个服务功能请求。
[0036] 在步骤S218中,系统管理程序30向第一客户机10的第一操作系统12指示请求的完 成。如果系统管理程序30认识到服务功能请求完成,那么系统管理程序30通知第一操作系 统12并向第一客户机10指示完成(例如,经由虚拟设备14上的中断)。
[0037] 在步骤S220中,第一客户机10的第一操作系统12向第一应用16告知请求的完成。 第一操作系统12调用第一客户机10的用户空间代码中的回调函数,W便通过通知第一应用 16来提供服务功能完成的指示。在图2中描述的过程期间,已经直接更新了第一客户机10的 存储器。附加的传值调用返回值可通过虚拟设备寄存器来访问。
[0038] 现在参考图3,其示出数据处理系统310的示例的示意图。数据处理系统310仅是适 合的数据处理系统的一个示例,并且并非旨在暗示关于本文描述的本发明的实施例的使用 范围或功能范围的任何限制。无论如何,数据处理系统310能够实现和/或执行上面在本文 中阐述的功能中的任一个。
[0039] 在数据处理系统310中,存在计算机系统/服务器312,其与许多其他通用或专用计 算系统环境或配置一起操作。可能适合于与计算机系统/服务器312-起使用的熟知的计算 系统、环境和/或配置的示例包括但不限于:个人计算机系统、服务器计算机系统、瘦客户 端、厚客户端、手持或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消 费电子设备、网络PC、小型计算机系统、大型计算机系统、W及包括W上系统或设备中的任 一种的分布式云计算环境、等等。
[0040] 计算机系统/服务器312可W在由计算机系统执行的诸如程序模块之类的计算机 系统可执行指令的一般背景中描述。通常,程序模块可W包括例程、程序、对象、组件、逻辑、 数据结构等,其执行特定任务或实现特定抽象数据类型。计算机系统/服务器312可W在分 布式云计算环境中实践,在所述分布式云计算环境中,任务由通过通信网络连接的远程处 理设备执行。在分布式云计算环境中,程序模块可W位于包括存储器存储设备的本地和远 程计算机系统存储介质中。
[0041] 如图3中所示,数据处理系统310中的计算机系统/服务器312W通用计算设备的形 式示出。计算机系统/服务器312的组件可W包括但不限于一个或多个处理器或处理单元 316,系统存储器328, W及将包括系统存储器328在内的各种系统组件禪合到处理单元316 的总线318。
[0042] 总线318表示若干类型的总线结构中的任一种中的一个或多个,包括存储器总线 或存储器控制器、外围总线、加速图形端口、W及使用多种总线架构中的任一种的处理器或 本地总线。通过示例的方式,并且并非进行限制,运样的架构包括工业标准架构(ISA)总线、 微通道架构(MCA)总线、增强型ISA化ISA)总线、视频电子标准协会(VESA)本地总线和外围 组件互连(PCI)总线。
[0043] 计算机系统/服务器312通常包括各种计算机系统可读介质。运样的介质可W是计 算机系统/服务器312可访问的任何可用介质,并且其包括易失性和非易失性介质、可移除 和不可移除介质。
[0044] 系统存储器328可W包括易失性存储器形式的计算机系统可读介质,诸如随机存 取存储器(RAM)330和/或高速缓冲存储器332。计算机系统/服务器312还可W包括其他可移 除/不可移除、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统334可 W被提供用于从不可移除、非易失性磁介质(未示出且通常被称为"硬驱")读取和向其写 入。尽管未示出,但是可W提供用于从可移除、非易失性磁盘(例如,"软盘")读取和向其写 入的磁盘驱动,W及用于从诸如CD-R0M、DVD-R0M或其他光学介质之类的可移除、非易失性 光盘读取或向其写入的光盘驱动。在运样的实例中,各自可W通过一个或多个数据介质接 口连接到总线318。如将在下面进一步描绘和描述的那样,系统存储器328可W包括具有一 组(例如,至少一个)程序模块的至少一个程序产品,所述程序模块配置成执行本发明的实 施例的功能。
[0045] 通过示例的方式并且并非进行限制,具有一组(至少一个)程序模块342的程序/实 用工具340、W及操作系统、一个或多个应用程序、其他程序模块和程序数据可W被存储在 系统存储器328中。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个 或其某种组合可W包括联网环境的实现。程序模块342通常执行如本文描述的本发明的实 施例的功能和/或方法。
[0046] 计算机系统/服务器312还可W与W下设备通信:一个或多个外部设备314,诸如键 盘、指点设备、显示器324等;使用户能够与计算机系统/服务器312交互的一个或多个设备; W及/或者使计算机系统/服务器312能够与一个或多个其他计算设备通信的任何设备(例 如,网卡、调制解调器等)。运样的通信可W经由输入/输出(I/O)接口 322发生。此外,计算机 系统/服务器312可W经由网络适配器320与一个或多个网络诸如局域网(LAN)、一般广域网 (WAN)和/或公共网(例如,因特网)通信。如图所示,网络适配器320经由总线318与计算机系 统/服务器312的其他组件通信。应当理解的是,尽管未示出,但其他硬件和/或软件组件可 W与计算机系统/服务器312结合使用。示例包括但不限于:微代码、设备驱动器、冗余处理 单元、外部磁盘驱动阵列、RAID系统、磁带驱动器和数据归档存储系统等。
[0047] 本文中描述的程序是基于在本发明的特定实施例中为其实现运些程序的应用来 识别的。然而,应当理解的是,本文中对任何特定程序的命名仅仅是出于方便的目的而被使 用的,并且因此本发明不应局限于唯一地用于由运样的命名识别和/或暗示的任何特定应 用。
[0048] 本发明可W是系统、方法和/或计算机程序产品。计算机程序产品可W包括计算机 可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
[0049] 计算机可读存储介质可W是任何可W保持和存储由指令执行设备使用的指令的 有形设备。计算机可读存储介质例如可W是一一但不限于一一电存储设备、磁存储设备、光 存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介 质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只 读存储器(ROM)、可擦式可编程只读存储器巧PROM或闪存)、静态随机存取存储器(SRAM)、便 携式压缩盘只读存储器(CD-ROM )、数字多功能盘(DVD )、记忆棒、软盘、机械编码设备、例如 其上存储有指令的打孔卡或凹槽内凸起结构、W及上述的任意合适的组合。运里所使用的 计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁 波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线 传输的电信号。
[0050] 运里所描述的计算机可读程序指令可W从计算机可读存储介质下载到各个计算/ 处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外 部存储设备。网络可W包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关 计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计 算机可读程序指令,并转发该计算机可读程序指令,W供存储在各个计算/处理设备中的计 算机可读存储介质中。
[0051] 用于执行本发明操作的计算机程序指令可W是汇编指令、指令集架构(ISA)指令、 机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者W-种或多种编程语言的 任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言一诸如 Smalltalk^++等,W及常规的过程式编程语言一诸如"C"语言或类似的编程语言。计算机 可读程序指令可W完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独 立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机 或服务器上执行。在设及远程计算机的情形中,远程计算机可W通过任意种类的网络一包 括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可W连接到外部计算机(例如利 用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令 的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程口阵列(FPGA)或可 编程逻辑阵列(PLA),该电子电路可W执行计算机可读程序指令,从而实现本发明的各个方 面。
[0052] 运里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框W及流程图和/ 或框图中各方框的组合,都可W由计算机可读程序指令实现。
[0053] 运些计算机可读程序指令可W提供给通用计算机、专用计算机或其它可编程数据 处理装置的处理器,从而生产出一种机器,使得运些指令在通过计算机或其它可编程数据 处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功 能/动作的装置。也可W把运些计算机可读程序指令存储在计算机可读存储介质中,运些指 令使得计算机、可编程数据处理装置和/或其他设备W特定方式工作,从而,存储有指令的 计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中 规定的功能/动作的各个方面的指令。
[0054] 也可W把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它 设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,W产 生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的 指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0055] 附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程 序产品的可能实现的体系架构、功能和操作。在运点上,流程图或框图中的每个方框可W代 表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用 于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也 可WW不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可W基本并行地执 行,它们有时也可W按相反的顺序执行,运依所设及的功能而定。也要注意的是,框图和/或 流程图中的每个方框、W及框图和/或流程图中的方框的组合,可W用执行规定的功能或动 作的专用的基于硬件的系统来实现,或者可W用专用硬件与计算机指令的组合来实现。
[0056] 本发明的各个实施例的描述已经出于举例说明的目的而被呈现,而并非旨在是无 遗漏的或局限于所公开的实施例。在不脱离本发明的范围和精神的情况下,许多改型和变 型对于本领域普通技术人员来说将是明显的。本文所使用的术语被选择为最佳地解释所述 实施例的原理、实际应用、或者相对于在市场中发现的技术的技术改进,或者使本领域其他 普通技术人员能够理解本文公开的实施例。
【主权项】
1. 一种用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享存储器 的方法,所述方法包括: 由一个或多个计算机处理器将虚拟设备提供给第一客户机,用于代理所述第一客户机 和第二客户机之间的存储器访问,其中所述第一客户机通过系统管理程序与所述第二客户 机相关联,以及其中所述第一客户机运行第一操作系统,且所述第二客户机运行第二操作 系统;以及 由所述一个或多个计算机处理器将一个或多个设备相关功能发送给所述第二客户机, 其中所述虚拟设备使得能够在所述第一客户机和所述第二客户机之间共享存储器。2. 根据权利要求1所述的方法,其中在所述第一客户机和所述第二客户机之间共享存 储器还包括: 由所述一个或多个计算机处理器向所述第二操作系统注册在所述第二客户机上运行 的第二应用,以便提供一个或多个服务功能; 由所述一个或多个计算机处理器从所述第二操作系统接收所述服务功能对所述系统 管理程序的可用性的宣告; 由所述一个或多个计算机处理器从所述系统管理程序接收向所述第一客户机宣告所 述服务功能的宣告; 由所述一个或多个计算机处理器确定在所述第一客户机上运行的第一应用发现了由 所述系统管理程序宣告的所述服务功能; 由所述一个或多个计算机处理器确定所述第一应用从所述系统管理程序请求了所述 服务功能; 由所述一个或多个计算机处理器确定所述系统管理程序向所述第二客户机告知了所 述第一应用对所述服务功能的请求; 由所述一个或多个计算机处理器确定所述第二客户机的所述第二操作系统接收到了 所述第一应用对所述服务功能的请求; 由所述一个或多个计算机处理器经由所述第二应用对来自所述第一应用的请求进行 服务,使得所述请求得到完成; 由所述一个或多个计算机处理器从所述第二客户机的所述第二操作系统接收向所述 系统管理程序通知所述请求的完成的通知; 由所述一个或多个计算机处理器从所述系统管理程序接收向所述第一客户机的所述 第一操作系统指示所述请求的完成的指示;以及 由所述一个或多个计算机处理器从所述第一客户机的所述第一操作系统接收向所述 第一应用通知所述请求的完成的通知。3. 根据权利要求2所述的方法,还包括:由所述一个或多个计算机处理器向所述第二操 作系统注册在所述第二客户机上运行的所述第二应用,以便通过阻塞系统调用提供服务功 能。4. 根据权利要求2所述的方法,其中从所述第二操作系统接收所述服务功能对所述系 统管理程序的可用性的宣告还包括: 由所述一个或多个计算机处理器调用半虚拟化功能;以及 由所述一个或多个计算机处理器注册中断处理程序。5. 根据权利要求2所述的方法,其中接收由所述系统管理程序向所述第一客户机宣告 所述服务功能的宣告还包括:由所述一个或多个计算机处理器接收来自一个或多个附加客 户机的对有效的服务功能的一个或多个查询。6. 根据权利要求2所述的方法,其中所述服务功能可作为虚拟设备被获得。7. 根据权利要求2所述的方法,其中确定所述第一应用从所述系统管理程序请求了所 述服务功能还包括:由所述一个或多个计算机处理器利用非阻塞系统调用。8. 根据权利要求2所述的方法,其中确定所述系统管理程序向所述第二客户机告知了 所述第一应用对所述服务功能的请求还包括:由所述一个或多个计算机处理器接收所述第 二客户机处的中断。9. 根据权利要求2所述的方法,其中经由所述第二应用对来自所述第一应用的请求进 行服务还包括:由所述一个或多个计算机处理器将所述第一客户机的输出的存储器区域映 射到所述第二应用的进程地址空间中。10. 根据权利要求9所述的方法,还包括:由所述一个或多个计算机处理器将所述第一 客户机的存储器映射为只读映射。11. 根据权利要求9所述的方法,还包括:所述系统管理程序通过移除所述存储器映射, 撤回对所述第一客户机的存储器的访问。12. 根据权利要求9所述的方法,还包括:响应于从所述第一客户机的所述第一操作系 统接收到向所述第一应用通知所述请求的完成的通知,由所述一个或多个计算机处理器更 新所述存储器。13. 根据权利要求2所述的方法,其中从所述第一客户机的所述第一操作系统接收向所 述第一应用通知所述请求的完成的通知还包括:由所述一个或多个计算机处理器提供回调 函数。14. 根据权利要求1所述的方法,其中所述虚拟设备配置有外围组件互连设备语义。15. 根据权利要求1所述的方法,还包括:由所述一个或多个计算机处理器使所述虚拟 设备的基地址寄存器适应于将所述第一客户机的指针转换为所述第二客户机中的指针位 置。16. 根据权利要求1所述的方法,还包括:由所述一个或多个计算机处理器通过所述第 二操作系统中的调度器的请求队列,控制对所述第二客户机的访问。17. 根据权利要求1所述的方法,还包括:由所述一个或多个计算机处理器经由所述系 统管理程序,提供有关所述第二客户机的功能的统计使用的信息。18. -种用于在都运行于数据处理系统上的第一客户机和第二客户机之间共享存储器 的计算机系统,所述计算机系统包括: 一个或多个计算机处理器; 一个或多个计算机可读存储设备; 存储在所述一个或多个计算机可读存储设备上的程序指令,用于由所述一个或多个计 算机处理器中的至少一个执行,以用于执行权利要求1至17中任一项的步骤。
【文档编号】G06F13/16GK106021142SQ201610168124
【公开日】2016年10月12日
【申请日】2016年3月23日
【发明人】U·巴赫尔, D·丁格尔, T·P·格罗塞尔
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1