CN103975307A - 分布式虚拟机中本机接口的隐藏式自动数据镜像 - Google Patents
分布式虚拟机中本机接口的隐藏式自动数据镜像 Download PDFInfo
- Publication number
- CN103975307A CN103975307A CN201280060360.XA CN201280060360A CN103975307A CN 103975307 A CN103975307 A CN 103975307A CN 201280060360 A CN201280060360 A CN 201280060360A CN 103975307 A CN103975307 A CN 103975307A
- Authority
- CN
- China
- Prior art keywords
- data
- immutable
- request
- distributed
- image data
- 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
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/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- 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
-
- 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/46—Multiprogramming arrangements
-
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
响应从远程执行容器接收初始请求,将引用数据容器的初始请求从分布式虚拟机的分布式增强型远程执行容器本机接口组件发送到分布式虚拟机的分布式增强型虚拟机本机接口组件。接收包括不可变数据和对数据容器的引用的数据镜像数据结构。将包括不可变数据和对数据容器的引用的所接收数据镜像数据结构存储在本地存储器存储区内。响应引用数据容器的初始请求,将对本地存储数据镜像数据结构的引用返回给远程执行容器。
Description
技术领域
本发明涉及分布式虚拟机。更具体地说,本发明涉及分布式虚拟机中本机接口的隐藏式自动数据镜像。
背景技术
JavaTM虚拟机实现支持JavaTM本机接口(JNI)。JNI允许JavaTM编程语言代码调用用C和C++(本机代码)编程语言编写的方法,反之亦然。用JavaTM编程语言编写的代码和本机代码两者可以在相同进程中和通过与两个代码段之间的执行过渡(execution transition)相同的线程执行。
发明内容
一种方法包括:响应从远程执行容器接收引用数据容器的初始请求,从分布式虚拟机的分布式增强型远程执行容器本机接口组件向分布式虚拟机的分布式增强型虚拟机本机接口组件发送引用数据容器的初始请求;响应引用数据容器的初始请求,接收包含不可变数据和对数据容器的引用的数据镜像数据结构;将包含不可变数据和对数据容器的引用的所接收数据镜像数据结构存储在本地存储器存储区内;以及响应引用数据容器的初始请求,将对本地存储的数据镜像数据结构的引用返回给远程执行容器。
一种可替代方法包括:在分布式虚拟机的分布式增强型虚拟机本机接口组件上,从分布式虚拟机的分布式增强型远程执行容器本机接口组件接收引用数据容器的初始请求;响应引用数据容器的初始请求的接收,识别数据容器内的不可变数据;构建包含所识别不可变数据和所请求的对数据容器的引用的数据镜像数据结构;以及响应引用数据容器的初始请求,将包含所识别不可变数据和所请求的对数据容器的引用的数据镜像数据结构发送给分布式虚拟机的分布式增强型远程执行容器本机接口组件。
一种系统包括存储器和编程为执行分布式虚拟机的分布式增强型远程执行容器本机接口组件的处理器,该分布式虚拟机的分布式增强型远程执行容器本机接口组件被配置成:响应从远程执行容器接收引用数据容器的初始请求,向分布式虚拟机的分布式增强型虚拟机本机接口组件发送引用数据容器的初始请求;响应引用数据容器的初始请求,接收包含不可变数据和对数据容器的引用的数据镜像数据结构;将包含不可变数据和对数据容器的引用的所接收数据镜像数据结构存储在存储器的本地存储器存储区内;以及响应引用数据容器的初始请求,将对本地存储数据镜像数据结构的引用返回给远程执行容器。
一种可替代系统包括通信模块和编程为执行分布式虚拟机的分布式增强型虚拟机本机接口组件的处理器,该分布式虚拟机的分布式增强型虚拟机本机接口组件被配置成:经由通信模块从分布式虚拟机的分布式增强型远程执行容器本机接口组件接收引用数据容器的初始请求;响应引用数据容器的初始请求的接收,识别数据容器内的不可变数据;构建包含所识别不可变数据和所请求的对数据容器的引用的数据镜像数据结构;以及响应引用数据容器的初始请求,经由通信模块将包含所识别不可变数据和的对数据容器的引用的数据镜像数据结构发送给分布式虚拟机的分布式增强型远程执行容器本机接口组件。
附图说明
图1是按照本主题的实施例的、用于分布式虚拟机中本机接口的隐藏式自动数据镜像的系统的实现的例子的框图;
图2是按照本主题的实施例的、能够进行分布式虚拟机中本机接口的隐藏式自动数据镜像的核心处理模块的实现的例子的框图;
图3是按照本主题的实施例、响应类引用的请求用在分布式虚拟机组件上构建的数据镜像分布式虚拟机中本机接口的隐藏式自动数据镜像的消息流的实现的例子的消息流图;
图4是按照本主题的实施例的、存储在存储器的数据镜像存储区内的数据镜像数据结构的实现的例子的框图;
图5是按照本主题的实施例的、在分布式增强型远程执行容器(REC)本机接口模块上的分布式虚拟机中本机接口的隐藏式自动数据镜像的进程的实现的例子的流程图;
图6是按照本主题的实施例的、在分布式增强型虚拟机(VM)本机接口模块上的分布式虚拟机中本机接口的隐藏式自动数据镜像的进程的实现的例子的流程图;
图7A是按照本主题的实施例的、在分布式增强型远程执行容器(REC)JavaTM本机接口(JNI)模块上的分布式虚拟机中本机接口的隐藏式自动数据镜像的进程内的初始处理的实现的例子的流程图;
图7B是按照本主题的实施例的、在分布式增强型远程执行容器(REC)JavaTM本机接口(JNI)模块上的分布式虚拟机中本机接口的隐藏式自动数据镜像的进程内的附加处理的实现的例子的流程图;以及
图8是按照本主题的实施例的、在分布式增强型虚拟机(VM)JavaTM本机接口(JNI)模块上的分布式虚拟机中本机接口的隐藏式自动数据镜像的进程的实现的例子的流程图。
具体实施方式
下面阐述的例子代表使本领域的技术人员能够实施本发明和例示实施本发明的最佳方式的必要信息。一旦参照附图阅读了如下描述,本领域的技术人员将了解本发明的构思,并认识到本文未具体阐明的这些构思的应用。应当明白,这些构思和应用都在本公开和所附权利要求书的范围之内。
本文所述的主题提供了分布式虚拟机中本机接口的隐藏式自动数据镜像。将分布式虚拟机的本机接口划分成增强型远程执行容器(REC)本机接口组件和增强型虚拟机(VM)本机接口组件。分布式增强型REC本机接口组件与分布式虚拟机的远程执行容器模块接口。分布式增强型VM本机接口组件与分布式虚拟机的虚拟机模块接口。这些分布式本机接口组件分别利用远程执行容器和虚拟机,在相同设备上或在不同设备上,在分开进程中执行。响应源自远程执行容器的请求,分布式增强型REC本机接口组件生成引用数据容器(例如,类)的到分布式增强型VM本机接口组件的初始请求。分布式增强型VM本机接口组件通过提供封装在代表数据容器的数据镜像数据结构内的与数据容器相联系的所请求引用和不可变数据,对引用数据容器的初始请求作出响应。就本描述而言,“不可变数据”包括不会改变的数据(例如,方法标识符(ID)和/或名称、字段标识符(ID)和/或名称、和标记成“最终”数据值的静态最终字段标识符(ID)和/或字段值)。增强型远程执行容器本机接口组件存储数据镜像数据结构,并通过从数据镜像数据容器中检索所请求不可变数据对不可变数据的请求作出响应。这样,可以省却检索不可变数据的附加进程间通信。另外,可用不可变数据的一些部分最初可能封装在数据镜像数据结构内,但该不可变数据可能随时间增加。这样,两个增强型本机接口组件之间的交互式处理操作为提高进程间通信的效率。
本主题可应用于,例如,分布式JavaTM虚拟机中的分布式JavaTM本机接口(JNI)。但是,本主题可以应用于如适合给定实现的任何分布式虚拟机中的任何本机接口。要明白的是,JNI是应用编程接口(API),这样,JNI在本文中可以可交换地称为“JNI客户机”或“JNI应用程序”,以及在本文所述的接口的这种理解和分布式性质的背景下可以简称为“JNI”。
本主题利用出现在分布式虚拟机中JavaTM本机接口(JNI)客户机与JavaTM虚拟机之间的模式来提高进程间通信的效率。例如,本主题应用于像JNI向发出引用数据容器的第一请求(引用请求),以及响应初始引用请求,使用从返回的引用发出对那个数据容器内的数据的随后请求(数据请求)那样的状况。在像这些那样的情况下,执行分布式虚拟机的部分的设备/进程响应初始引用请求地工作,以便识别与数据容器有关的不可变数据(例如,如下面更详细所述的所有不可变数据或一部分),并响应引用请求将不可变数据返回给执行分布式虚拟机的远程执行容器部分的设备/进程。将不可变数据存储在与执行分布式虚拟机的远程执行容器部分的设备/进程相联系的本地存储体中作为数据镜像数据结构,并且使数据镜像数据结构的本地存储数据可用于针对其它分布式进程的数据容器的随后请求。当使用响应初始请求返回的引用对数据作出随后请求时,如果那个数据是不可变的,则从本地存储体内的数据镜像数据结构返回。这样,可以消除与检索不可变数据的往返进程间通信相联系的延迟、处理、和带宽。
因为将不可变数据用在JNI结构中以及可以从单个容器请求多个不可变值,所以消除的远程调用的次数可能相当多。本技术不要求对为远程执行容器进程镜像的数据作复杂高速缓存管理地利用通过JNI接口返回的引用的生命周期的识别。
JNI返回在要求多个远程调用的序列中返回的许多数据元素的不透明句柄。就本描述而言,“不透明句柄”代表应用编程接口(API)中的合同,以便无论句柄指向什么东西对于直接调用来说都是不可见的,必须在随后调用中交还引用。例如,如果交还“jclass”,则不能像指针那样对待jclass,以及不能直接审查对象/类内的数据。对于这样的状况,将对jclass的引用交给另一个函数来检索所请求数据。这样,就本描述而言,可以将不透明句柄视作间接引用。这些不透明句柄允许不影响现有应用程序的运行地将包括比在传统中返回的信息多的信息的引用返回给JNI。如上以及如下更详细所述,本主题平衡不透明句柄的使用以改善分布式的运行。
不透明句柄是具有受当前JNI方法调用限制的寿命的“本地引用”。进一步,存在将不透明句柄升级成具有超过单次调用的寿命的“全局引用”的所定义进程。给定在第一次调用中返回的引用,本技术识别与在随后调用中可能请求的那个引用有关的一组不可变数据。获取/返回比在第一次调用中请求的数据多的数据的成本可能比甚至引起与远程执行容器之间的一次额外往返低得多,取决于实现,也许低一个或多个数量级。
本技术可以应用的容器对象的两个例子是“jclass”和“jobject”容器。但是,应当注意到,存在其它容器对象,本主题可以不偏离本主题的范围地应用于任何这样的容器。
“jclass”代表JavaTM编程语言实现的类。一旦获得对jclass的引用,可以使随后调用获取在类的生命内不变的数据(即,不可变数据)。这样可以在随后调用中获得的在类的生命内不变的数据的例子包括方法标识符(ID)和/或名称、字段标识符(ID)和/或名称、和静态最终字段标识符(ID)和/或字段值。
“jobject”代表使用jclass实例化的JavaTM编程语言实现对象。一旦获得对jobject的引用,可以使随后调用获取在对象的生命内不变的数据(即,不可变数据)。这样可以在随后调用中获得的在对象的生命内不变的数据的例子包括最终字段值(例如,数据值)。
应当注意的是,就像JavaTM虚拟机工具接口(JVMTI)那样的某些调试平台而言,当使JVMTI能够用于时,这种数据的一些可能不是不可变的。在这样的情况下,对于不同地在正常运行期间不可变的数据,可以禁止优化。这样,在保护在正常运行模式期间的效率的同时,根据不可变数据在调试运行期间是否保持不可变,可以进一步配置本文所述的运行,以便允许灵活用于调试目的。
本技术包括提高分布式虚拟机中本机接口的效率的三种技术。最初,当使第一次调用获取对数据容器的初始引用时,由于在中处理JNI调用,而不是只返回引用,所以进行附加操作以便也从数据容器中提取不可变数据(作为配置选项,所有或一部分),并将这个不可变数据与该引用一起包装成数据镜像(DataMirror)。然后将数据镜像返回给远程执行容器,将对数据镜像的引用返回给JNI,而不是在中通过JNI调用返回的引用。
其次,对于为本机接口通过JNI的处理传入引用的所有情况,在(对JNI客户机透明的)JNI实现中进行审查,以确定该引用是常规引用还是对数据镜像的引用。这可以,例如,使用低位标记或如适合给定实现的其它技术来进行。在将调用转给远程执行容器的情况下,譬如,在请求是有关非不可变数据或有关非数据相关请求的情况下,在数据镜像中提取并返回引用,以便可以用在转发给的请求中。在请求的数据是不可变的和存储在数据镜像内的情况下,不作出回到远程执行容器的调用地从数据镜像中提取并返回不可变数据。
如上以及如下更详细所述,像响应对不可变数据的每个项目的第一请求那样,可以随时间获取不可变数据,以减轻与未请求的不可变数据的集合相联系的处理负担。其它配置选项可以用于配置数据镜像内而不是初始引用请求上的不可变数据的集合,所有这样的选项被认为在本主题的范围之内。
本技术的第三方面是数据镜像寿命管理。也可以配置和管理数据镜像内的不可变数据的寿命。例如,如果利用作为参数传入的对数据镜像的引用地调用叫做“DeleteLocalReference”的方法/过程,则可以与对象中的各自数据的寿命无关地释放整个数据镜像的存储器。另外,响应JNI方法的完成和返回,可以释放所有其余非全局数据镜像的存储器。进一步,如果调用叫做“NewGlobalRef”的方法/过程以及作为参数传入对数据镜像的引用,则创建封装从远程执行容器返回的全局引用和来自原数据镜像的信息的新“全局”数据镜像。作为一个另外的例子,如果调用叫做“DeleteGlobalRef”的方法/过程以及作为参数传入对数据镜像的引用,则可以提取全局引用,以及可以使对远程执行容器的调用删除全局引用,然后释放整个数据镜像的存储器。对于寿命管理存在许多其它可能性,所有这些都被认为在本主题的范围之内。
可以以几种方式进一步优化本文所述的技术。例如,取代利用对引用的第一请求发回所有不可变数据,可以记录随时间请求的数据,以便系统掌握什么数据包括在最初返回的数据镜像内。这样,可以使最常用数据或最常用数据的子集包括在数据镜像内。另外,可以通过在第一次调用时只发回一部分不可变数据随时间构建数据镜像,随后调用如适合给定应用地填充数据镜像。为每个请求发送的数据量可以基于给定网络上一个分组内的可用数据空间,以便最初不需要另外传输地利用可用有效载荷区。然后根据随后请求,可以将另外的分组填充到容量中,以及在有效利用分组有效载荷和网络带宽的同时随时间构建数据镜像。进一步,取代在第一次调用时发回所有数据,最初可以发送以及随着随后作出对不可变数据的调用填充空的或只部分填入的数据镜像,以便根据对任何一个不可变数据的第二次请求,可以从数据镜像中本地满足该数据请求。如果原始引用被升级成全局引用和被高速缓存,则这可能特别有用,这可以用在,例如,频繁使用的类上。可以对本主题作出许多其它优化,所有这些都被认为在本主题的范围之内。
应该注意到,本主题的构思源于对与分布式虚拟机中的本机接口有关的某些局限性的认识。例如,已经观察到,可以构建这样的分布式虚拟机(例如,分布式),使得可以在一个或多个远程执行容器中执行本机代码(例如,用C或C++编程语言编写的代码),该一个或多个远程执行容器可以寄放在与执行JavaTM编程语言代码的地方(例如,分割虚拟机)相同或不同的计算设备上的单独进程中。已经进一步观察到,对于分割虚拟机,本机代码意识不到与分开执行,这种分离防止了行为不当本机代码使变得不稳定,以及使得可以在与主不同的环境(例如,安全背景、指针宽度、尾数法等)中执行本机代码。但是,还观察到,在这样的分割虚拟机中,JavaTM编程语言代码与本机代码之间的方法/过程调用(例如,交叉进程/交叉机器调用)的成本相对于非分布式虚拟机存在较大额外开销和延迟,取决于实现、和分布式代码段之间的往返通信消耗的时间、消耗的带宽、和延迟的处理,可能大一个或更多个数量级。还观察到,利用标准化JavaTM本机接口(JNI),应用程序往往必须作出多次调用来获取完成动作所需的信息。例如,为了获取一个对象内的字段的内容,应用程序首先作出获取该对象的类的调用,然后作出获取该类的字段的标识符(ID)的调用,再然后作出获取字段本身的内容的调用,导致六(6)个进程间消息。另外还观察到,在分布式中,这六个消息/步骤的每一个都招致耗时的往返。鉴于这几种观察,已经认识到可以使用数据镜像来减少通信延迟、带宽和处理时间,以及无需改变应用程序的应用编程接口(API)地使应用级结构觉察不到数据镜像,以便使数据镜像对于利用这样API的未来和现有应用程序是透明的。如上以及如下更详细所述,本主题通过提供分布式虚拟机中本机接口的隐藏式自动数据镜像,改善了分布式虚拟机内与这样的处理有关的额外开销和延迟。这样,可以通过使用本文所述的技术实现分布式虚拟机的改进运行。
本文所述的分布式虚拟机中本机接口的隐藏式自动数据镜像可以实时进行,以便允许提示虚拟机的分布式进程之间的数据镜像。就本描述而言,实时将包括有关提供所述主题的用户可接受的信息处理的合理响应时间的足够短持续时间的任何时间帧。另外,术语“实时”将包括通常所称的“准实时”—一般指的是有关提供所述主题的用户可接受的按需信息处理的合理响应时间的足够短持续时间的任何时间帧(例如,在几分之一秒内或在几秒内)。这些术语虽然难以精确定义,但本领域的普通技术人员可以很好地领会。
图1是用于分布式虚拟机中本机接口的隐藏式自动数据镜像的系统100的实现的例子的框图。computing device_1102经由网络与computing device_2106到computing device_N108通信。computing device_1102执行与computingdevice_1102到computing device_N108之一执行的虚拟机112接口的远程执行容器110,以形成分布式虚拟机。虚拟机112可以包括,例如,JavaTM虚拟机或如适合给定实现的其它JavaTM编程语言进程。远程执行容器110和虚拟机112通过不同进程/线程来操作,无论共处在单个computingdevice_1102内还是物理分布在多个计算设备上。
远程执行容器110包括与在不同进程/线程(或如适合给定实现的设备)中执行的虚拟机112内的JavaTM编程语言代码接口的在一个进程/线程中执行的本机代码(例如,C和/或C++编程语言代码)。应当注意到,用可以支持C/C++编程语言调用约定的任何语言编写的代码都可以用于本机代码实现。这样,使用C和C++使本文的引用变得容易,包括对C和/或C++编程语言的任何引用的本文对本机代码的任何引用都被认为包括对任何这样其它语言的引用。还应当注意到,computing device_2106到computing device_N108的每一个内的虚拟机112用虚线例示出来,以便例示与虚拟机112的地点有关的灵活性。还应当注意到,远程执行容器110也可以不偏离本主题的范围地运行在computing device_2106到computing device_N108的一个或多个内。
还应当注意到,各自计算设备102到108可以是便携式计算设备,通过用户的能力将该计算设备移动到不同地点,或通过各自计算设备与像飞机、汽车、或其它行驶车辆那样的便携平台的联系。还应当注意到,各自计算设备可以是能够如上以及如下更详细所述处理信息的任何计算设备。例如,该计算设备可以包括像个人计算机(例如,台式、膝上型等)或手持设备(例如,蜂窝式电话、个人数字助理(PDA)、电邮设备、音乐记录或播放设备、手表等)那样的设备、服务器设备、或能够如上以及如下更详细所述处理信息的任何其它设备。
网络104可以包括适合预定目的的任何互连形式,包括分别像内联网或互联网那样的专用或公用网络、直接模块间互连、拨号、无线、或能够互连各自设备的任何其它互连机构。
图2是能够进行分布式虚拟机中本机接口的隐藏式自动数据镜像的核心处理模块200的实现的例子的框图。核心处理模块200可以与如适合给定实现的computing device_1102到computing device_N108的每一个相联系。进一步,如下更详细所述,核心处理模块200可以与每种实现相联系地提供数据镜像的不同和互补处理。
这样,对于下面的任何例子,应当明白的是,针对结合另一个设备所述的任何一个设备所述的功能的任何方面(例如,发送等)要理解为同时描述其它各自设备的功能(例如,接收等)。进一步,对于在单个设备上使用不同进程/线程的分布式虚拟机实现,将发送和接收理解为在进程/线程之间操作。
中央处理单元(CPU)202提供了核心处理模块200内的计算机指令执行、计算、和其它能力。显示器204向核心处理模块200的用户提供可视信息,输入设备206为用户提供了输入能力。
显示器204可以包括像阴极射线管(CRT)、液晶显示器(LCD)、发光二极管(LED)、电子墨水显示器、投影、触摸屏或其它显示元件或面板那样的任何显示设备。输入设备206可以包括计算机键盘、小键盘、鼠标、笔、操纵杆、或用户可以与显示器204交互和对显示器20上的信息作出响应的任何其它类型输入设备。
应当注意到,显示器204和输入设备206在图2内用虚线表示来例示,以便指示它们可以是某些实现的核心处理模块200的可选组件。于是,核心处理模块200可以起没有直接用户可配置性或反馈的完全自动嵌入式设备的作用。但是,核心处理模块200也可以分别经由显示器204和输入设备206提供用户反馈和可配置性。
通信模块208提供允许核心处理模块200与系统100内的其它模块通信的互连能力。通信模块208可以包括可用于提供互连能力的任何电、协议、和协议转换能力。尽管为了易于例示和描述起见,将通信模块208例示成组件级模块,但应当注意到,通信模块208可以包括用于如上以及如下更详细所述执行通信模块208的功能的任何硬件、编程处理器、和存储器。例如,通信模块208可以包括具有专用集成电路(ASIC)、处理器、天线、和/或进行与通信模块208相联系的通信和电控制活动的分立集成电路和组件的形式的另外控制电路。另外,通信模块208可以适当地包括中断级、堆栈级、和应用级模块。更进一步,通信模块208可以包括用于存储、执行、和数据处理以便进行与通信模块208相联系的处理活动的任何存储器组件。通信模块208还可以不偏离本主题的范围地形成所述的其它电路的一部分。
存储器210包括远程执行容器110和虚拟机112。远程执行容器110和虚拟机112的每一个与分布式增强型JavaTM本机接口(JNI)模块212接口。分布式增强型JavaTM本机接口(JNI)模块212包括两个接口组件,即,分布式增强型远程执行容器(REC)JNI组件214和分布式增强型虚拟机(VM)JNI组件216,它们彼此交互以提供分布式增强型JNI模块212的功能。分布式增强型REC JNI组件214进一步与远程执行容器110接口,分布式增强型VMJNI组件216进一步与虚拟机112接口。
分布式增强型JNI模块212通过利用另外不可变数据对引用和/或数据请求作出响应实现本主题的作用。分布式增强型JNI模块212起通过创建不可变数据的数据镜像以减少远程执行容器110与虚拟机112之间的通信交互实现本主题的作用。如上以及如下更详细所述,数据镜像存储区218存储创建的数据镜像。
应当明白,存储器210可以包括适当分布或定域、适合预定目的的易失性和非易失性存储器的任何组合,可以包括为了易于例示起见未例示在本例中的其它存储分段。例如,存储器210可以不偏离本主题的范围地包括代码存储区、操作系统存储区、代码执行区、和数据区。
还例示了分布式增强型JNI模块220作为本文所述的分布式增强型JNI功能的可替代实现。分布式增强型JNI模块220代表分布式增强型JNI模块212的硬件模块实现。这样,远程执行容器110和虚拟机112可以经由分布式增强型JNI模块220接口,以便进行与每个各自模块相联系的各自处理,或可以不偏离本主题的范围地在进程级上实现分布式增强型JNI模块212。
对于单平台实现,分布式增强型JNI模块220可以实现分布式增强型RECJNI组件214和分布式增强型VM JNI组件216两者。可替代地,每一个实现分布式增强型REC JNI组件214和分布式增强型VM JNI组件216之一的多个和互补分布式增强型JNI模块220可以用在不同设备上,以便跨越多个平台地实现分布式增强型JNI模块220。
尽管为了易于例示和描述起见将分布式增强型JNI模块220例示成组件级模块,但应当注意到,分布式增强型JNI模块220可以包括用于如上以及如下更详细所述执行这个模块的功能的任何硬件、编程处理器、和存储器。例如,分布式增强型JNI模块220可以包括具有专用集成电路(ASIC)、处理器、和/或进行与各自设备相联系的通信和电控制活动的分立集成电路和组件的形式的另外控制电路。另外,分布式增强型JNI模块220可以适当地包括中断级、堆栈级、和应用级模块。更进一步,分布式增强型JNI模块220可以包括用于存储、执行、和数据处理以便进行与该模块相联系的处理活动的任何存储器组件。
还应当注意到,分布式增强型JNI模块220可以不偏离本主题的范围地形成其它电路的一部分。进一步,分布式增强型JNI模块220可替代地可以实现成像上述那样的存储在存储器210内的应用程序。在这样的实现中,分布式增强型JNI模块220可以包括由执行本文所述的功能的CPU202执行的指令。CPU202可以执行这些指令以便为核心处理模块200提供如上以及如下更详细所述的处理功能。分布式增强型JNI模块220可以不偏离本主题的范围地形成中断服务例程(ISR)的一部分、操作系统的一部分、浏览器应用处理器的一部分、或单独应用程序的一部分。
CPU202、显示器204、输入设备206、通信模块208、存储器210、和分布式增强型JNI模块220经由互连222互连。互连222可以包括系统总线、网络、或能够向各自组件提供适合各自目的的互连的任何其它互连。
虽然核心处理模块200被例示成带有和含有所述的某些组件,但可以不偏离本主题的范围地将其它模块和组件与核心处理模块200相联系。另外,还应当注意到,虽然为了易于例示起见将核心处理模块200描述成单个设备,但核心处理模块200内的组件可以不偏离本主题的范围地共处或分布和经由网络互连。对于分布式安排,显示器204和输入设备206可以处在销售点设备、信息亭、或其它地点中,而CPU202和存储器210可以处在本地或远程服务器中。核心处理模块200的组合还可以有许多其它可能安排,所有这些都被认为在本主题的范围之内。于是,核心处理模块200可以采取许多形式,以及可以与许多平台相联系。
就本描述而言,如下依代码例子代表源自与像远程执行容器110那样的远程执行容器一起工作、像分布式增强型JNI模块212或分布式增强型JNI模块220那样的本机接口的动作。下面第一示范性伪代码代表远程执行容器对虚拟机的询问,以找出与虚拟机相联系的类:
jclass cls=(*env)->FindClass(env,“com/company/example/TestClass”);
这个第一示范性伪代码可以用于检索对名为“TestClass”的类的类引用。对类引用指定变量“cls”。
如下第二示范性伪代码代表获取与通过“cls”变量引用的类的数据元素相联系的字段标识符(ID)的请求。
jfieldID a=(*env)->GetFieldID(env,cls,“a”,“I”);
这个第二示范性伪代码可以用于检索在“cls”变量中引用的类的数据元素的字段标识符(ID)。如上所述,字段标识符(ID)被认为是不可变数据,因为它不随类的给定实例化而变。在本例内,假设通过字段标识符(ID)引用的数据元素是整数类型的,未被标记成“最终”,以便实际数据元素的数值不是不可变的,而是可以随时间而变。
如下第三示范性伪代码代表获取指定给所获字段标识符所代表的整数数据元素的数值的请求。
jint avalue=(*env)->GetIntField(env,allValues,a);
如上所述,根据导致本主题的构思的观察,这三种操作的每一种都将导致远程执行容器与虚拟机之间的一次往返通信。但是,根据本主题,如下面结合图3所述,可以减少往返通信的次数。
图3是响应类引用的请求在分布式虚拟机组件上构建数据镜像的分布式虚拟机中本机接口的隐藏式自动数据镜像的消息流300的实现的例子的消息流图。分布式增强型JNI模块212(或如适合给定实现的分布式增强型JNI模块220)被显示成包括分别起允许远程执行容器110与虚拟机112交互的分布式增强型REC JNI组件214和分布式增强型VM JNI组件216。
由于图形内的拥挤,未明确描绘地描述了某些接口通信。但是,应当明白,这些接口通信形成该图形的一部分。就本例而言,假设由描绘在图3内的各自元件处理像上面描述在示范性伪代码段中的序列那样的处理序列。还进一步假设如上面结合第一示范性伪代码所述,通过向分布式增强型RECJNI组件214发出识别与虚拟机112相联系的类的请求(例如,“FindClass”请求)的远程执行容器110内的本机代码启动图3内的处理。
在方框302中,与远程执行容器110相联系的分布式增强型REC JNI组件214从远程执行容器110接收引用与虚拟机112相联系的类的请求(例如,“Find Class”或“FindClass”请求),并启动发出识别与虚拟机112相联系的类的询问的处理。如上所述,虚拟机112可以分布在相同计算设备上的单独进程内或作为在与远程执行容器110不同的计算设备上执行的单独进程。
分布式增强型REC JNI组件214发出“Find Class”请求(线1)。与虚拟机112相联系的分布式增强型VM JNI组件216在方框304中接收该请求并识别类,另外检索与该类相联系的不可变数据。在方框306中,分布式增强型VM JNI216在包括从所识别类中识别和检索的所有不可变数据、像与执行分布式增强型VM JNI组件216的设备相联系的存储器210的数据镜像存储区218那样的存储器内,为在请求内引用的类构建数据镜像数据结构。数据镜像存储区218可以形成与进程间或设备间通信相联系的分组处理区的一部分。分布式增强型VM JNI组件216将带有不可变数据和类引用的数据镜像数据结构(线2)返回给与远程执行容器110相联系的分布式增强型REC JNI组件214。
应当注意到,分布式增强型VM JNI组件216可替代地可以使用数据分组有效载荷填充来返回如适合给定实现、包括不可变数据的一部分的数据镜像结构。数据镜像结构可以被构建成随着另外数据被请求,随时间包括更多数据。在本例内,假设在带有对类的引用的数据镜像内至少返回类的数据元素的字段标识符。例如,可以返回方法名称/标识符、字段名称/标识符、和静态最终字段值/字段标识符。
响应数据镜像数据结构的接收,由分布式增强型REC JNI组件214将数据镜像数据结构存储在,譬如,存储器210的数据镜像存储区218内。将对数据镜像的引用返回给远程执行容器110(未示出)。
在方框308中,分布式增强型REC JNI组件214从远程执行容器110接收对与以前接收和存储了数据镜像数据结构的类相联系的数据字段标识符(例如,“Get Field Identifier”)的请求。但是,取代直接将请求发给与虚拟机112相联系的分布式增强型VM JNI组件216,分布式增强型REC JNI组件214调查该类的所存储数据镜像数据结构,以确定与该请求相联系的字段标识符是否已经存储在数据镜像数据结构内。在本例内,如上所述,响应初始请求,将所有字段标识符返回给和存储到数据镜像数据结构中。这样,在方框310中在所存储本地数据镜像数据结构内识别和从其中提取数据字段标识符(ID),并将其返回给远程执行容器110。于是,分布式增强型REC JNI组件214使用本地数据镜像数据结构,从而省却了对与虚拟机112相联系的分布式增强型VM JNI组件216的请求,以及不计与对字段标识符的请求相联系的整个往返延迟。
就本例而言,假设所请求字段ID代表整数值,以及该整数在初始请求对该类的引用的时候未被标记成“最终”。这样,该整数值不是不可变数据,并且不在分布式增强型VM JNI组件216创建的数据镜像内返回。但是,应当注意到,标记为“最终”的任何数值或标识符都可以被认为是不可变的,并且可以加入数据镜像数据结构中,以减少与对这些最终数值或标识符的请求相联系的进程间通信。
在方框312中,分布式增强型REC JNI组件214从远程执行容器110接收对与从所存储本地数据镜像数据结构中检索的字段标识符相联系的整数字段值(例如,“Get Integer Field”)的请求。分布式增强型REC JNI组件214将“Get Integer Field”请求发给与虚拟机112相联系的分布式增强型VM JNI组件216(线3)。分布式增强型VM JNI组件216在方框314中处理对整数值的请求并将整数数据返回给分布式增强型REC JNI组件214(线4)。分布式增强型REC JNI组件214在方框316中将整数数据返回给请求远程执行容器110。
这样,消息流图300示出了可以响应对类引用的第一请求在数据镜像数据结构内返回不可变数据,以及可以从本地存储的数据镜像数据结构中处理随后对不可变数据的请求。于是,可以省却对不可变数据的单独进程间请求。如上所述,数据镜像可以随时间填入,以便像例如随着数据标识符被请求和/或数据值被最终确定优化进程间带宽使用。
图4是存储在存储器210的数据镜像存储区218内的数据镜像数据结构400的实现的例子的框图。数据镜像数据结构400包括引用与数据镜像数据结构400所代表的特定数据镜像数据结构相联系的类的本地类引用402。字段标识符(ID_1)404到字段标识符(ID_N)406每一个包括代表所引用类内的数据字段的字段标识符和字段名称/类型数据对。方法标识符(ID_1)408到方法标识符(ID_N)410每一个包括代表所引用类内的方法的方法标识符和方法名称/类型数据对。如上所述,可以将另外不可变数据值存储在数据镜像数据结构内,所有这样的字段都被认为在本主题的范围之内。数据镜像数据结构400可以如上以及如下更详细所述地用于本地访问不可变数据以及减少进程之间的往返通信。
下面所述的图5到图8代表可以由像核心处理模块200那样的设备执行,以进行与本主题相联系的分布式虚拟机中本机接口的隐藏式自动数据镜像的示范性进程。可以对示范性进程作出许多其它改变,所有这些都被认为在本主题的范围之内。该示范性进程可以由像分布式增强型JNI模块220那样的模块执行和/或由CPU202或与这样的器件相联系的分布式增强型JNI模块212的分组件之一或两者执行。应当注意到,为了易于例示起见,在下面所述的示范性进程内未例示超时过程和其它错误控制过程。但是,应当明白,所有这样的过程都被认为在本主题的范围之内。并且,可以组合所述的进程,可以改变所述的进程的序列,以及可以添加另外的处理,这些都不偏离本主题的范围。
图5是在分布式增强型远程执行容器(REC)本机接口模块上进行分布式虚拟机中本机接口的隐藏式自动数据镜像的进程的实现的例子的流程图。在方框502中,进程500响应从远程执行容器接收引用数据容器的初始请求,从分布式虚拟机的分布式增强型远程执行容器本机接口组件向分布式虚拟机的分布式增强型虚拟机本机接口组件发送引用数据容器的初始请求。在方框504中,进程500响应引用数据容器的初始请求,接收包含不可变数据和对数据容器的引用的数据镜像数据结构。在方框506中,进程500将包含不可变数据和对数据容器的引用的所接收数据镜像数据结构存储在本地存储器存储区内。在方框508中,进程500响应引用数据容器的初始请求,将对本地存储数据镜像数据结构的引用返回给远程执行容器。
图6是在分布式增强型虚拟机(VM)本机接口模块上进行分布式虚拟机中本机接口的隐藏式自动数据镜像的进程600的实现的例子的流程图。在方框602中,进程600在分布式虚拟机的分布式增强型虚拟机本机接口组件上从分布式虚拟机的分布式增强型远程执行容器本机接口组件接收引用数据容器的初始请求。在方框604中,进程600响应引用数据容器的初始请求的接收,识别数据容器内的不可变数据。在方框606中,进程600构建包含所识别不可变数据和对数据容器的所请求引用的数据镜像数据结构。在方框608中,进程600响应引用数据容器的初始请求,将包含所识别不可变数据和对数据容器的所请求引用的数据镜像数据结构发送给分布式虚拟机的分布式增强型远程执行容器本机接口组件。
图7A-7B例示了在像分布式增强型REC JNI组件214那样的分布式增强型远程执行容器(REC)JavaTM本机接口(JNI)模块上进行分布式虚拟机中本机接口的隐藏式自动数据镜像的进程700的实现的例子的流程图。图7A例示了进程700内的初始处理。应当注意到,如上所述,像与JavaTM虚拟机工具接口(JVMTI)相联系那样,在某些调试操作期间可以禁止处理不可变数据。由于图7A和7B的绘图空间内的拥挤,从图形中省略了这种允许和禁止不可变数据处理的调试确定。但是,应当明白,这种处理形成进程700的一部分。调试允许确定的示范性处理将在下面结合图8来描述以供参考。
在判定点702上,进程700作出是否如从远程执行容器,譬如,从远程执行容器110接收到那样检测到引用数据容器的初始请求的确定。该初始请求可以是,例如,类引用的初始请求(例如,如上所述的Find Class请求)。响应已经检测到引用数据容器的初始请求,进程700在方框704中将引用数据容器的初始请求发送给像分布式增强型VM JNI组件216那样的分布式虚拟机的分布式增强型虚拟机本机接口组件。
在方框706中,进程700响应引用数据容器的初始请求接收包括不可变数据和对数据容器的引用的数据镜像数据结构。应当注意到,对数据容器的引用可以嵌在数据镜像数据结构内。另外,如上所述,数据镜像数据结构可以包括所有不可变数据,或可以由分布式增强型虚拟机本机接口组件针对带宽消耗优化初始响应,使用分组有效载荷填充来发送与在,例如,单个分组内可能输送一样多的不可变数据,不消耗部分分组有效载荷地随时间构建数据镜像数据结构。这样,如果分布式增强型虚拟机本机接口组件未请求和初始未发送不可变数据的某些部分,则不发送这些部分或不将其存储在本地存储数据镜像数据结构内。
在方框708中,进程700将包括不可变数据和对数据容器的引用的所接收数据镜像数据结构存储到像存储器210的数据镜像存储区218那样的本地存储器存储区内。在方框710中,进程700响应引用数据容器的初始请求,将对本地存储数据镜像数据结构的引用返回给远程执行容器。这样,远程执行容器现在含有可以用于对与数据容器相联系的数据的随后请求的对本地存储数据镜像数据结构的引用,以及可以无需从数据容器中检索不可变数据的另外往返通信地从本地存储体中检索数据镜像数据结构内的任何不可变数据。
返回到判定点702的描述,响应如未从远程执行容器接收到那样未检测到引用数据容器的初始请求的确定,或响应在方框710中将对本地存储数据镜像数据结构的引用返回给远程执行容器的完成,进程700在判定点712上作出是否检测到对与数据容器相联系的数据的另外项目的来自远程执行容器的请求的确定。响应检测到对与数据容器相联系的数据的另外项目的来自远程执行容器的请求的确定,进程700开始处理对与数据容器相联系的数据的另外项目的请求,并在判定点714上作出数据的所请求另外项目是否是针对不可变数据的确定。响应数据的所请求另外项目是对不可变数据的请求的确定,进程700在判定点716上作出所请求不可变数据是否可在本地存储数据镜像数据结构内获得的确定。
响应在判定点716上对与数据容器相联系的数据的另外项目的请求包含对可在本地存储数据镜像数据结构内获得的不可变数据的请求的确定,进程700在方框718中从本地存储数据镜像数据结构中提取所请求不可变数据。应当注意到,这个不可变数据数据是当所请求数据是不可变的以及不可变数据存储在数据镜像数据结构中时,不作出回到分布式增强型虚拟机本机接口组件的调用地从本地存储数据镜像数据结构中提取的。在方框720中,进程700响应对数据的另外项目的请求,将所请求不可变数据返回给远程执行容器。进程700内方框720之后的处理将在下面作更详细描述。
回到判定点714的描述,响应数据的所请求另外项目不是对不可变数据的请求的确定或响应在判定点716上所请求不可变数据不可在本地存储数据镜像数据结构内获得的确定,进程700在方框722中从本地存储数据镜像数据结构中提取与数据镜像数据结构一起返回的对数据容器的引用。在方框724中,进程700利用对数据容器的所提取引用将对与数据容器相联系的数据的另外项目的请求发送给分布式虚拟机的分布式增强型虚拟机本机接口组件。在方框726中,进程700从分布式虚拟机的分布式增强型虚拟机本机接口组件接收数据的所请求另外项目和另外不可变数据。另外不可变数据可以包括最初未与数据镜像数据结构一起接收的不可变数据,也可以包括像已经标记成“最终”数据值的变量那样的其它不可变数据项目。
在方框728中,进程700将另外不可变数据存储到本地存储数据镜像数据结构中。在方框730中,进程700将数据的所请求另外项目返回给远程执行容器。应当注意到,数据的所请求另外项目可以是不可变或非不可变数据,但如果最初未与初始数据镜像数据结构一起发送所有不可变数据,则响应带宽可以用于发送另外不可变数据来填充本地存储数据镜像数据结构。
返回到判定点712的描述,响应未检测到对与数据容器相联系的数据的另外项目的来自远程执行容器的请求的确定,或响应在方框720和/或730中将数据的所请求另外项目返回给远程执行容器,进程700在判定点732作出是否像经由过程、例程、或方法调用启用的检测那样,检测到进行任何本地存储数据镜像数据结构的寿命管理的请求。响应未检测到进行任何本地存储数据镜像数据结构的寿命管理的请求的确定,进程700返回到判定点702,重复如上所述。响应检测到进行任何本地存储数据镜像数据结构的寿命管理的请求的确定,进程700转到结合图7B所示和所述的处理,开始进行本地存储数据镜像数据结构的所请求寿命管理。
图7B例示了与在分布式增强型REC JNI模块上进行分布式虚拟机中本机接口的隐藏式自动数据镜像的进程700相联系的附加处理。在判定点734上,进程700作出进行寿命管理的所检测请求是否是检测对包括对本地存储数据镜像数据结构的引用作为参数的DeleteLocalReference例程的调用的启用的确定。响应检测到对DeleteLocalReference例程的调用的启用,进程700在方框736中使用对数据镜像数据结构的引用释放分配给数据镜像数据结构的存储器。进程700返回到判定点702上结合图7A所述的处理,并重复如上所述。
返回到判定点734的描述,响应进行寿命管理的所检测请求不是启用DeleteLocalReference例程的确定,进程700在判定点738上作出进行寿命管理的所检测请求是否是检测远程执行容器中执行本机方法的完成的确定。响应检测到远程执行容器中执行本机方法的完成的确定,进程700在方框740中在那种方法的范围内为所有其余非全局本地存储数据镜像数据结构释放存储器。进程700返回到判定点702上结合图7A所述的处理,并重复如上所述。
返回到判定点738的描述,响应进行寿命管理的所检测请求未检测到远程执行容器中执行本机方法的完成的确定,进程700在判定点742上作出进行寿命管理的所检测请求是否是检测对包括作为参数的对本地存储数据镜像数据结构的引用的NewGlobalRef例程的调用的启用的确定。响应检测到对NewGlobalRef例程的调用的启用的确定,进程700在方框744中在本地存储器存储区内创建新全局数据镜像数据结构。新全局数据镜像数据结构的创建牵涉到由于描绘图形中空间的局限性表示在方框744中的几个分步骤。这些分步骤包括远程调用分布式虚拟机的虚拟机(VM)侧(经由分布式增强型虚拟机本机接口)以获得/获取全局引用,以及响应从VM侧接收到新全局引用创建新全局数据镜像数据结构。可以将这种远程调用加入可以消除各自进程之间的往返通信的其它JNI业务中。进一步,这种创建新全局数据镜像数据结构的处理包括从本地数据镜像数据结构中创建新全局数据镜像数据结构。存在从本地数据镜像数据结构中创建新全局数据镜像数据结构的几种可替代手段。例如,可以将本地数据镜像数据结构复制到新创建的全局数据镜像数据结构中。可替代地,像通过用全局引用取代本地引用那样,可以将本地数据镜像数据结构提升成全局数据镜像数据结构。另外,可以与用全局引用取代本地引用相联系地将提升的全局数据镜像数据结构移到全局列表中,以创建全局数据镜像数据结构。这样,存在许多可替代手段,所有这些都被认为在本主题的范围之内。与实现无关,应当明白,创建的全局数据镜像数据结构封装从分布式虚拟机的分布式增强型虚拟机本机接口组件返回的对数据容器的引用、和来自本地存储数据镜像数据结构的不可变数据。在方框746中,进程700将对新本地存储数据镜像数据结构的全局引用返回给远程执行容器。进程700返回到判定点702上结合图7A所述的处理,并重复如上所述。
返回到判定点742的描述,响应进行寿命管理的所检测请求未检测到对NewGlobalRef例程的调用的启用的确定,进程700在判定点748上作出进行寿命管理的所检测请求是否是检测对包括作为参数的对新本地存储全局数据镜像数据结构的引用的DeleteGlobalRef例程的调用的启用的确定。响应检测到对DeleteGlobalRef例程的调用的启用的确定,进程700在方框750中从新本地存储全局数据镜像数据结构中提取全局引用。在方框752中,进程700作出对虚拟机的调用,以便删除全局引用和删除本地存储全局数据镜像数据结构。在方框754中,进程700释放分配给本地存储全局数据镜像数据结构的存储器。进程700返回到判定点702上结合图7A所述的处理,并重复如上所述。就本例而言,假设所述寿命管理动作的至少一种将导致肯定的确定和处理。这样,假设可以不执行判定点748的否定分支,但在判定点748上的确定是否定的情况下,进程700也返回到判定点702上结合图7A所述的处理,并重复如上所述。
这样,进程700响应向分布式虚拟机的分布式增强型虚拟机本机接口组件发送引用数据容器的初始请求,接收和本地存储数据镜像数据结构。进程700还响应对不可变数据的随后请求检查本地存储数据镜像数据结构,并且如果数据可本地获得,则从本地存储数据镜像数据结构中检索所请求的不可变数据。于是,进程700可以减少有关不可变数据的往返通信。进程700还进行本地存储数据镜像数据结构的寿命管理,以便管理本地存储器分配。
图8是在像分布式增强型VM JNI组件216那样的分布式增强型虚拟机(VM)JavaTM本机接口(JNI)模块上进行分布式虚拟机中本机接口的隐藏式自动数据镜像的进程800的实现的例子的流程图。在判定点802上,进程800作出是否如从像分布式增强型REC JNI组件214那样的分布式虚拟机的分布式增强型远程执行容器本机接口组件接收那样检测到引用数据容器的初始请求的确定。该初始请求可以是,例如,对类引用的初始请求(例如,如上所述的Find Class请求)。响应检测到引用数据容器的初始请求的确定,进程800在判定点804中作出是否允许像经由JavaTM虚拟机工具接口(JVMTI)那样的调试的确定。如上所述,这种示范性处理显示在图8内判定点804上的唯一一个地点中以供参考。但是,这样的处理可以在与如适合给定实现的处理相联系的任何适当地点上实现。响应允许调试的确定,进程800在方框806中提取并发送所请求的引用。推迟以及将在下面进一步详细描述发送所请求引用完成之后与进程800相联系的另外处理。
返回到判定点804的描述,响应不允许调试的确定,进程800在方框808内识别数据容器内的不可变数据。在判定点810上,进程800作出是否发送所有可用不可变数据或是否像为了使分组有效载荷填充保护带宽那样,发送可用不可变数据的一部分的确定。这样,可用不可变数据的一部分可以包括根据进程间数据分组有效载荷大小选择的不可变数据量。响应发送可用不可变数据的一部分的确定,进程800在方框812上确定可用进程间数据分组有效载荷大小。在方框814中,进程800选择不可变数据来填充数量尽可能与最小空有效载荷空间一样大的可用有效载荷以便改善带宽使用。这种处理可以例如,考虑到数据类型大小地进行。在数据容器内的阵列或数据结构较大的状况下,可以将多个分组用于发送数据镜像数据结构。在这样的状况下,可以处理第二或随后分组来发送另外不可变数据,以便以最小空有效载荷空间填充要发送的最后分组内的可用有效载荷。
响应在方框814中选择要发送的不可变数据的完成,或响应在判定点810上发送所有不可变数据的确定,进程800在方框816中构建包括所识别/所选不可变数据和对数据容器的所请求引用的数据镜像数据结构。这种处理可以包括构建大小足以以最小空有效载荷空间填充一个或多个数据分组的可用进程间数据分组有效载荷大小的数据镜像数据结构。另外,可以使对数据容器的引用包括/嵌在数据镜像数据结构内,或可以用数据镜像数据结构包装加以发送。在方框818中,进程800将包括所识别/所选不可变数据和对数据容器的所请求引用的数据镜像数据结构发送给分布式虚拟机的分布式增强型远程执行容器本机接口组件。
响应在方框818中将数据镜像数据结构发送给请求分布式增强型远程执行容器本机接口组件的完成,响应在判定点802上未检测到引用数据容器的初始请求的确定,或响应在方框806中提取和发送所请求引用(如果在调试模式下),则进程800在判定点820上作出是否检测到对数据容器内的数据的另外项目的请求的确定。应当注意到,可以响应判定点82上的肯定确定作出有关允许调试的另外确定,由于绘图纸内的空间局限性,已经从描绘图形中省略了这种另外确定。响应未检测到对数据容器内的数据的另外项目的请求的确定,进程800返回到判定点802,并重复如上所述。
响应判定点820上检测到对数据容器内的数据的另外项目的请求的确定,进程800在方框822中从数据容器中提取数据的所请求另外项目。应当注意到,来自数据容器的数据的所请求另外项目可以是不可变或非不可变数据。
在判定点824上,进程800作出是否有另外不可变数据适合与来自数据容器的数据的所请求另外项目一起发送的确定。另外不可变数据可以包括,例如,未响应初始引用数据容器的请求发送的不可变数据、未响应对来自数据容器的另外数据的前请求发送的不可变数据(例如,由于分组有效载荷优化)、已经标记为“最终”数据值的数据变量、和其它形式的不可变数据。
响应有另外不可变数据适合与数据的所请求另外项目一起发送的确定,进程800在方框826中识别另外不可变数据并从数据容器中提取另外不可变数据。响应在判定点824上没有另外不可变数据适合与数据的所请求另外项目一起发送的确定,或响应在方框826中识别和提取另外不可变数据,进程800在方框828中响应对数据容器内的数据的另外项目的请求,将数据的所请求另外项目和任何所提取另外不可变数据发送给分布式虚拟机的分布式增强型远程执行容器本机接口组件。进程800返回到判定点802,并重复如上所述。
这样,进程800通过识别与数据容器相联系的不可变数据,对引用数据容器的初始请求作出响应,并将带有对数据容器的引用的数据镜像数据结构发送给分布式虚拟机的分布式增强型远程执行容器本机接口组件。进程800可以包装可用不可变数据的一部分,并且可以响应对来自数据容器的另外数据项的一个或多个请求发送任何其余不可变数据。
如上面结合图1到图8所述,示范性系统和进程提供了分布式虚拟机中本机接口的隐藏式自动数据镜像。可以作出与分布式虚拟机中本机接口的隐藏式自动数据镜像相联系的许多其它改变,所有这些都被认为在本主题的范围之内。
本领域的普通技术人员应当认识到,根据对上述教导的考虑,上述某些例子基于像CPU202那样的编程处理器的使用。但是,本发明不局限于这样的示范性实施例。因为可以使用像专用硬件和/或专用处理器那样的硬件组件等效物来实现其它实施例。类似地,可以将通用计算机、基于微处理器的计算机、微控制器、光学计算机、模拟计算机、专用处理器、专用电路和/或专用硬连线逻辑单元用于构建可替代等效实施例。
本领域的普通技术人员应该懂得,本发明的一些方面可以具体化成系统、方法或计算机程序产品。于是,本发明的一些方面可以采取本文一般可以统称为“电路”、“模块”或“系统”的完全硬件实施例、完全软件实施例(包括固件、驻留软件、微码等)、或组合软件和硬件方面的实施例的形式。而且,本发明的一些方面可以采取具体化在含有具体化在上面的计算机可读程序代码的一种或多种计算机可读介质中的计算机程序产品的形式。
可以利用一种或多种计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以是,例如,但不是限于,电、磁、光、电磁、红外或半导体系统、装置、设备、或上述的任何适当组合。计算机可读存储介质的更具体例子(非穷举列表)包括如下:含有一根或多根电线的电连线、便携式计算机磁盘、硬盘驱动器、随机访问存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备、或上述的任何适当组合。在本文件的背景下,计算机可读存储介质可以是可以包含或存储供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的任何有形介质。
计算机可读信号介质可以包括计算机可读程序代码具体化在其中,例如,在基带中或作为载波的一部分的传播数据信号。这样的传播信号可以采取多种多样形式的任何一种形式,包括但不限于电磁形式、光形式、或它们的任何适当组合。计算机可读信号介质可以是不是计算机可读存储介质和可以传送,传播,或输送供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合的程序的任何计算机可读信号介质。
具体化在计算机可读介质上的程序代码可以使用任何适当介质发送,这样的介质包括但不限于无线、有线、光纤、射频(RF)等,或上述的任何适当组合。
执行本发明的一些方面的操作的计算机程序代码可以以一种或多种编程语言的任何组合形式编写,这样的编程语言包括像JavaTM、SmalltalkTM、C++等那样的面向对象编程语言、和像“C”编程语言或类似编程语言那样的传统过程编程语言。程序代码可以完全在用户计算机上,部分在用户计算机上,作为独立软件包,部分在用户计算机上和部分在远程计算机上,或完全在远程计算机或服务器上执行。在后一种情形下,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型网络与用户计算机连接,或可以与外部计算机连接(例如,通过使用互联网服务提供商的互联网)。
本发明的一些方面是参考按照本发明的实施例的方法、装置(系统)和计算机程序产品的例示性流程图和/或框图来描述的。要明白的是,例示性流程图和/或框图的每个方框、和例示性流程图和/或框图中的方框的组合可以通过计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器形成一台机器,以便经由计算机或其它可编程数据处理装置的处理器执行的指令形成实现规定在流程图和/或框图的一个或几个方框中的功能/动作的器件。
这些计算机程序指令也可以存储在可以指示计算机、其它可编程数据处理装置或其它设备以特定方式起作用的计算机可读介质中,以便存储在计算机可读介质中的指令形成包括实现规定在流程图和/或框图的一个或几个方框中的功能/动作的指令的制品。
也可以将计算机程序指令装载到计算机、其它可编程数据处理装置或其它设备上,使要在计算机、其它可编程装置或其它设备上执行的一系列操作步骤形成计算机实现进程,以便在计算机或其它可编程装置上执行的指令提供实现规定在流程图和/或框图的一个或几个方框中的功能/动作的进程。
图形中的流程图和框图例示了按照本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能、和操作。关于这一点,流程图或框图中的每个方框可能代表包括实现指定逻辑功能的一条或多条可执行指令的代码的模块、片段、或一部分。还应该注意到,在一些可替代实现中,标注在方框中的功能可能未按标注在图形中的次序发生。例如,相继显示的两个方框事实上可能几乎同时执行,或取决于所牵涉的功能,这些方框有时可能按相反的次序执行。还要注意到,框图和/或例示性流程图的每个方框,以及框图和/或例示性流程图中的方框的组合可以由执行指定功能或动作的基于专用硬件系统,或专用硬件和计算机指令的组合体执行。
适合存储和/或执行程序代码的数据处理系统包括直接或通过系统总线间接与存储元件耦合的至少一个处理器。存储元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储体、和提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储体中检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘、显示器、定位设备等)可以直接或通过中介I/O控制器与系统耦合。
网络适配器也可以与系统耦合,以便使数据处理系统能够通过中介专用或公用网络与其它数据处理系统或远程打印机或存储设备耦合。调制解调器、电缆调制解调器和以太网卡仅仅是几种当前可用类型的网络适配器。
本文所使用的术语只是为了描述具体实施例的目的而无意限制本发明。如本文所使用,单数形式“一个”、“一种”和“该”也有意包括复数形式,除非上下文另有明确指示。还要明白,术语“包含”当用在本说明书中,规定存在所述的特征、整数、步骤、操作、元件、和/或组件,但不排除存在或附加一个或多个其他特征、整数、步骤、操作、元件、组件、和/或它们的群体。
所附权利要求书中的所有部件或步骤以及功能元件的相应结构、材料、动作以及等价物旨在包括如具体要求保护结合其他所要求保护的元件执行功能的任何结构、材料或动作。展示本发明的描述是为了例示和描述的目的,但不是穷尽性的或使本发明限于所公开的形式。许多修改和变化对本领域普通技术人员来说是明显的,不偏离本发明的范围和精神。选择和描述实施例是为了最佳地说明本发明的原理和实际应用,并使本领域普通技术人员能够针对如适于设想的特定用途地作出各种修改的各种实施例理解本发明。
Claims (18)
1.一种方法,包含:
响应从远程执行容器(110)接收引用数据容器的初始请求,从分布式虚拟机的分布式增强型远程执行容器本机接口组件(214)向分布式虚拟机的分布式增强型虚拟机本机接口组件(216)发送引用数据容器的初始请求;
响应引用数据容器的初始请求,接收包含不可变数据和对数据容器的引用的数据镜像数据结构;
将包含不可变数据和对数据容器的引用的所接收数据镜像数据结构存储在本地存储器存储区内;以及
响应引用数据容器的初始请求,将对本地存储的数据镜像数据结构的引用返回给远程执行容器。
2.如权利要求1所述的方法,进一步包含利用本地存储的数据镜像数据结构处理对与数据容器相联系的数据的另外项目的请求。
3.如权利要求2所述的方法,其中利用本地存储的数据镜像数据结构处理对与数据容器相联系的数据的另外项目的请求包含:
从远程执行容器接收对与数据容器相联系的数据的另外项目的请求;
确定对与数据容器相联系的数据的另外项目的请求是否包含对可在本地存储的数据镜像数据结构内可用的不可变数据的请求;以及
响应确定对与数据容器相联系的数据的另外项目的请求包含对可在本地存储的数据镜像数据结构内可用的不可变数据的请求:
从本地存储的数据镜像数据结构中提取所请求不可变数据;以及
响应对数据的另外项目的请求,将所请求不可变数据返回给远程执行容器。
4.如权利要求3所述的方法,进一步包含:
确定对与数据容器相联系的数据的另外项目的请求不包含对不可变数据的请求和确定所请求的不可变数据在本地存储的数据镜像数据结构内不可用之一;
从本地存储的数据镜像数据结构中提取与数据镜像数据结构一起返回的对数据容器的引用;
利用所提取的对数据容器的引用将对与数据容器相联系的数据的另外项目的请求发送给分布式虚拟机的分布式增强型虚拟机本机接口组件;
从分布式虚拟机的分布式增强型虚拟机本机接口组件接收所请求的数据的另外项目和另外的不可变数据;
将另外的不可变数据存储到本地存储的数据镜像数据结构中;以及
将所请求的数据的另外项目返回给远程执行容器。
5.如权利要求1所述的方法,进一步包含进行本地存储的数据镜像数据结构的寿命管理。
6.如权利要求5所述的方法,其中进行本地存储的数据镜像数据结构的寿命管理包含:
检测对DeleteLocalReference例程的调用的启用,该DeleteLocalReference例程包括作为参数的对本地存储的数据镜像数据结构的引用;以及
响应对DeleteLocalReference例程的调用的启用,使用对本地存储的数据镜像数据结构的引用释放分配给本地存储的数据镜像数据结构的存储器。
7.如权利要求5所述的方法,其中进行本地存储的数据镜像数据结构的寿命管理包含:
检测在远程执行容器中执行的本机方法的执行的完成;以及
响应检测到本机方法的执行的完成,在本机方法的上下文内为所有的其余非全局本地存储的数据镜像数据结构释放存储器。
8.如权利要求5所述的方法,其中进行本地存储的数据镜像数据结构的寿命管理包含:
检测对NewGlobalRef例程的调用的启用,该NewGlobalRef例程包含作为参数的对本地存储的数据镜像数据结构的引用;
为新全局引用将请求发送给分布式增强型虚拟机本机接口组件;
从分布式增强型虚拟机本机接口组件接收新全局引用;
响应检测到对NewGlobalRef例程的调用的启用,在本地存储器存储区内创建新全局数据镜像数据结构,该新全局数据镜像数据结构封装从分布式虚拟机的分布式增强型虚拟机本机接口组件返回的新全局引用、和来自本地存储的数据镜像数据结构的不可变数据;以及
将对新本地存储的全局数据镜像数据结构的全局引用返回给远程执行容器。
9.如权利要求8所述的方法,其中进行本地存储的数据镜像数据结构的寿命管理包含:
检测对DeleteGlobalRef例程的调用的启用,该DeleteGlobalRef例程包含作为参数的对新本地存储的全局数据镜像数据结构的引用;以及
响应检测到对DeleteGlobalRef例程的调用的启用:
从新本地存储的全局数据镜像数据结构中提取全局引用;
作出对远程执行容器的调用,以便删除对新本地存储的全局数据镜像数据结构的全局引用;以及
释放分配给新本地存储的全局数据镜像数据结构的存储器。
10.一种方法,包含:
在分布式虚拟机的分布式增强型虚拟机本机接口组件(216)上,从分布式虚拟机的分布式增强型远程执行容器本机接口组件(214)接收引用数据容器的初始请求;
响应引用数据容器的初始请求的接收,识别数据容器内的不可变数据;
构建包含所识别的不可变数据和所请求的对数据容器的引用的数据镜像数据结构;以及
响应引用数据容器的初始请求,将包含所识别的不可变数据和所请求的对数据容器的引用的数据镜像数据结构发送给分布式虚拟机的分布式增强型远程执行容器本机接口组件。
11.如权利要求10所述的方法,其中构建包含所识别的不可变数据和所请求的对数据容器的引用的数据镜像数据结构包含利用不可变数据的一部分构建数据镜像数据结构。
12.如权利要求11所述的方法,其中利用不可变数据的一部分构建数据镜像数据结构包含:
确定可用进程间数据分组有效载荷大小;
根据所确定的进程间数据分组有效载荷大小选择不可变数据,以最小空有效载荷空间填充数据分组有效载荷;以及
构建大小足以以最小空有效载荷空间填充数据分组有效载荷的数据镜像数据结构。
13.如权利要求10所述的方法,进一步包含:
接收对来自数据容器的数据的另外项目的请求;
从数据容器中提取所请求的数据的另外项目;以及
响应对来自数据容器的数据的另外项目的请求,发送所请求的数据的另外项目。
14.如权利要求13所述的方法,其中响应对数据容器内的数据的另外项目的请求发送所请求的数据的另外项目包含发送来自数据容器的非不可变数据的另外项目。
15.如权利要求13所述的方法,其中响应对数据容器内的数据的另外项目的请求发送所请求的数据的另外项目包含发送不可变数据的另外项目。
16.如权利要求13所述的方法,进一步包含:
响应接收对来自数据容器的数据的另外项目的请求,确定另外的不可变数据是否可用于与所请求的数据的另外项目一起发送;
响应确定另外的不可变数据可用于与所请求的数据的另外项目一起发送:
识别另外的不可变数据;以及
从数据容器中提取另外的不可变数据;以及
其中响应对数据容器内的数据的另外项目的请求发送所请求的数据的另外项目包含响应对数据容器内的数据的另外项目的请求发送所提取的另外的不可变数据和所请求的数据的另外项目。
17.一种包含适用于执行按照前面任何一项方法权利要求所述的方法的所有步骤的部件的系统;
18.一种包含指令的计算机程序,其中当在计算机系统上执行所述计算机程序时,所述指令执行按照前面任何一项方法权利要求所述的方法的所有步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/312,246 US8863129B2 (en) | 2011-12-06 | 2011-12-06 | Automated caching and mirroring of immutable data in distributed virtual machines via native interface components |
US13/312,246 | 2011-12-06 | ||
PCT/EP2012/074066 WO2013083486A1 (en) | 2011-12-06 | 2012-11-30 | Hidden automated data mirroring for native interfaces in distributed virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103975307A true CN103975307A (zh) | 2014-08-06 |
CN103975307B CN103975307B (zh) | 2017-05-31 |
Family
ID=47469879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280060360.XA Active CN103975307B (zh) | 2011-12-06 | 2012-11-30 | 分布式虚拟机中本机接口的隐藏式自动数据镜像 |
Country Status (6)
Country | Link |
---|---|
US (3) | US8863129B2 (zh) |
JP (1) | JP5936157B2 (zh) |
CN (1) | CN103975307B (zh) |
DE (1) | DE112012004747B4 (zh) |
GB (1) | GB2511968B (zh) |
WO (1) | WO2013083486A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105243321A (zh) * | 2015-10-27 | 2016-01-13 | 成都卫士通信息产业股份有限公司 | 一种基于容器虚拟化技术的密码机、实现及工作方法 |
CN107632783A (zh) * | 2017-09-14 | 2018-01-26 | 快云信息科技有限公司 | 将分布式存储系统接入容器的方法、装置、可读存储介质 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11036565B2 (en) * | 2008-06-09 | 2021-06-15 | Rex Young | Service virtual machine |
CN102761566B (zh) * | 2011-04-26 | 2015-09-23 | 国际商业机器公司 | 迁移虚拟机的方法和装置 |
US9787681B2 (en) | 2012-01-06 | 2017-10-10 | Optio Labs, Inc. | Systems and methods for enforcing access control policies on privileged accesses for mobile devices |
AU2013207269A1 (en) | 2012-01-06 | 2014-07-24 | Optio Labs, LLC | Systems and methods for enforcing security in mobile computing |
US9609020B2 (en) * | 2012-01-06 | 2017-03-28 | Optio Labs, Inc. | Systems and methods to enforce security policies on the loading, linking, and execution of native code by mobile applications running inside of virtual machines |
US9773107B2 (en) | 2013-01-07 | 2017-09-26 | Optio Labs, Inc. | Systems and methods for enforcing security in mobile computing |
US20140273857A1 (en) | 2013-03-13 | 2014-09-18 | Optio Labs, Inc. | Systems and methods to secure short-range proximity signals |
US9348634B2 (en) | 2013-08-12 | 2016-05-24 | Amazon Technologies, Inc. | Fast-booting application image using variation points in application source code |
US10346148B2 (en) | 2013-08-12 | 2019-07-09 | Amazon Technologies, Inc. | Per request computer system instances |
US9280372B2 (en) | 2013-08-12 | 2016-03-08 | Amazon Technologies, Inc. | Request processing techniques |
US9705755B1 (en) | 2013-08-14 | 2017-07-11 | Amazon Technologies, Inc. | Application definition deployment with request filters employing base groups |
US9798567B2 (en) | 2014-11-25 | 2017-10-24 | The Research Foundation For The State University Of New York | Multi-hypervisor virtual machines |
US9971624B2 (en) | 2015-05-17 | 2018-05-15 | Nicira, Inc. | Logical processing for containers |
CN110806920B (zh) * | 2015-09-10 | 2022-12-13 | 华为云计算技术有限公司 | 镜像部署方法、装置 |
US10078527B2 (en) | 2015-11-01 | 2018-09-18 | Nicira, Inc. | Securing a managed forwarding element that operates within a data compute node |
US9998371B2 (en) | 2015-12-16 | 2018-06-12 | Nicira, Inc. | Packet communication between container data compute nodes and a managed forwarding element |
US10063469B2 (en) | 2015-12-16 | 2018-08-28 | Nicira, Inc. | Forwarding element implementation for containers |
CN108205481B (zh) * | 2016-12-19 | 2022-03-08 | 华为技术有限公司 | 应用的容器实例创建方法和装置 |
US10482258B2 (en) * | 2017-09-29 | 2019-11-19 | Nxp Usa, Inc. | Method for securing runtime execution flow |
US11016798B2 (en) | 2018-06-01 | 2021-05-25 | The Research Foundation for the State University | Multi-hypervisor virtual machines that run on multiple co-located hypervisors |
CN112559115A (zh) * | 2019-09-25 | 2021-03-26 | 阿里巴巴集团控股有限公司 | 一种容器镜像的删除方法、装置及设备 |
US12019522B2 (en) | 2022-01-20 | 2024-06-25 | Pure Storage, Inc. | Container recovery layer prioritization |
US12079515B2 (en) | 2022-01-20 | 2024-09-03 | Pure Storage, Inc. | Immutable nodes in a container system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020038301A1 (en) * | 2000-03-09 | 2002-03-28 | International Business Machines Corporation | Speculative caching of individual fields in a distributed object system |
US6502103B1 (en) * | 1999-06-14 | 2002-12-31 | International Business Machines Corporation | Providing composed containers and data objects to support multiple resources |
US20030145315A1 (en) * | 2002-01-23 | 2003-07-31 | Tuomo Aro | Exchange of data between components of distributed software having different versions of software |
CN1801093A (zh) * | 2006-01-17 | 2006-07-12 | 浙江大学 | Java操作系统中类装载的实现方法 |
CN101169718A (zh) * | 2006-10-23 | 2008-04-30 | 国际商业机器公司 | 用于实例化抽象类的系统和方法 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3613401B2 (ja) * | 1992-07-06 | 2005-01-26 | マイクロソフト コーポレーション | オブジェクトの名称を付けて結び付ける方法及びシステム |
EP0669020B1 (en) * | 1992-11-13 | 1997-04-02 | Microsoft Corporation | Methods for marshalling interface pointers for remote procedure calls |
US5881230A (en) * | 1996-06-24 | 1999-03-09 | Microsoft Corporation | Method and system for remote automation of object oriented applications |
US6021470A (en) * | 1997-03-17 | 2000-02-01 | Oracle Corporation | Method and apparatus for selective data caching implemented with noncacheable and cacheable data for improved cache performance in a computer networking system |
US5951680A (en) * | 1997-06-24 | 1999-09-14 | International Business Machines Corporation | Configurator object |
US6442620B1 (en) * | 1998-08-17 | 2002-08-27 | Microsoft Corporation | Environment extensibility and automatic services for component applications using contexts, policies and activators |
JP4146983B2 (ja) * | 1999-02-26 | 2008-09-10 | インターナショナル・ビジネス・マシーンズ・コーポレーション | サーバ・オブジェクトのメソッドを呼び出すプロセス方法及びデータ処理システム |
US6269373B1 (en) * | 1999-02-26 | 2001-07-31 | International Business Machines Corporation | Method and system for persisting beans as container-managed fields |
US6598037B1 (en) * | 1999-07-26 | 2003-07-22 | Microsoft Corporation | Data table object interface for datastore |
US6438560B1 (en) * | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
US6901588B1 (en) | 2000-04-17 | 2005-05-31 | Codemesh, Inc. | Sharing components between programming languages by use of polymorphic proxy |
US6915520B2 (en) * | 2001-04-06 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | Java C++ proxy objects |
US6996832B2 (en) * | 2001-05-30 | 2006-02-07 | Bea Systems, Inc. | System and method for software component plug-in framework |
US7114152B2 (en) * | 2002-01-08 | 2006-09-26 | International Business Machines Corporation | Method, apparatus, and program to determine the mutability of an object at loading time |
US7140002B2 (en) * | 2002-11-07 | 2006-11-21 | International Business Machines Corporation | Method and system for automatic code generation accessing functionality in a remote process |
US7099888B2 (en) * | 2003-03-26 | 2006-08-29 | Oracle International Corporation | Accessing a remotely located nested object |
US8001142B2 (en) * | 2003-04-02 | 2011-08-16 | Oracle America, Inc. | Distributed data system with incremental data updates |
US7840951B1 (en) | 2003-08-22 | 2010-11-23 | Oracle America, Inc. | Reducing the overhead involved in executing native code in a virtual machine through binary reoptimization |
US8881099B2 (en) * | 2004-09-10 | 2014-11-04 | Oracle International Corporation | Dynamic generation of wrapper classes to implement call-by-value semantics |
US7480678B2 (en) * | 2004-10-29 | 2009-01-20 | International Business Machines Corporation | Creating reference objects |
US7664879B2 (en) * | 2004-11-23 | 2010-02-16 | Cisco Technology, Inc. | Caching content and state data at a network element |
US7490320B2 (en) | 2005-02-18 | 2009-02-10 | International Business Machines Corporation | Method and apparatus for transforming Java Native Interface function calls into simpler operations during just-in-time compilation |
US7530059B2 (en) | 2005-02-18 | 2009-05-05 | International Business Machines Corporation | Method for inlining native functions into compiled java code |
US7574450B2 (en) * | 2005-04-19 | 2009-08-11 | International Business Machines Corporation | Method for sharing an object between applications |
US7562349B2 (en) * | 2005-04-25 | 2009-07-14 | Sap Ag | Version adaptation interface for integration of different virtual machines |
US20070011669A1 (en) * | 2005-07-06 | 2007-01-11 | International Business Machines Corporation | Software migration |
US20070038986A1 (en) * | 2005-08-15 | 2007-02-15 | Houser Thomas M | Automation of Java application using enhanced late-bound support |
CA2678098C (en) * | 2009-09-25 | 2011-04-05 | Ibm Canada Limited - Ibm Canada Limitee | Distributed management of native interface metadata and arrays |
CA2680596C (en) | 2009-10-16 | 2010-11-02 | Ibm Canada Limited - Ibm Canada Limitee | Methods and systems involving remote exception checks |
CA2701503A1 (en) * | 2010-04-30 | 2010-07-21 | Ibm Canada Limited - Ibm Canada Limitee | Remote caching of an identifier |
CA2707249C (en) * | 2010-06-29 | 2011-08-23 | Ibm Canada Limited - Ibm Canada Limitee | Native interface optimization for read-only arrays |
US20120197925A1 (en) * | 2011-01-28 | 2012-08-02 | International Business Machines Corporation | Optimization of Database Driver Performance |
US8813051B2 (en) * | 2011-04-14 | 2014-08-19 | International Business Machines Corporation | Running multiple copies of native code in a Java Virtual Machine |
-
2011
- 2011-12-06 US US13/312,246 patent/US8863129B2/en not_active Expired - Fee Related
-
2012
- 2012-11-30 JP JP2014545187A patent/JP5936157B2/ja active Active
- 2012-11-30 CN CN201280060360.XA patent/CN103975307B/zh active Active
- 2012-11-30 WO PCT/EP2012/074066 patent/WO2013083486A1/en active Application Filing
- 2012-11-30 DE DE112012004747.8T patent/DE112012004747B4/de active Active
- 2012-11-30 GB GB1410572.0A patent/GB2511968B/en active Active
-
2014
- 2014-09-12 US US14/485,435 patent/US9063772B2/en active Active
-
2015
- 2015-05-11 US US14/709,128 patent/US9195496B2/en not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6502103B1 (en) * | 1999-06-14 | 2002-12-31 | International Business Machines Corporation | Providing composed containers and data objects to support multiple resources |
US20020038301A1 (en) * | 2000-03-09 | 2002-03-28 | International Business Machines Corporation | Speculative caching of individual fields in a distributed object system |
US20030145315A1 (en) * | 2002-01-23 | 2003-07-31 | Tuomo Aro | Exchange of data between components of distributed software having different versions of software |
CN1801093A (zh) * | 2006-01-17 | 2006-07-12 | 浙江大学 | Java操作系统中类装载的实现方法 |
CN101169718A (zh) * | 2006-10-23 | 2008-04-30 | 国际商业机器公司 | 用于实例化抽象类的系统和方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105243321A (zh) * | 2015-10-27 | 2016-01-13 | 成都卫士通信息产业股份有限公司 | 一种基于容器虚拟化技术的密码机、实现及工作方法 |
CN105243321B (zh) * | 2015-10-27 | 2018-08-14 | 成都卫士通信息产业股份有限公司 | 一种基于容器虚拟化技术的密码机、实现及工作方法 |
CN107632783A (zh) * | 2017-09-14 | 2018-01-26 | 快云信息科技有限公司 | 将分布式存储系统接入容器的方法、装置、可读存储介质 |
CN107632783B (zh) * | 2017-09-14 | 2020-07-03 | 快云信息科技有限公司 | 将分布式存储系统接入容器的方法、装置、可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
DE112012004747T5 (de) | 2014-11-06 |
JP5936157B2 (ja) | 2016-06-15 |
US9195496B2 (en) | 2015-11-24 |
US8863129B2 (en) | 2014-10-14 |
WO2013083486A1 (en) | 2013-06-13 |
GB2511968B (en) | 2016-09-07 |
US20130145362A1 (en) | 2013-06-06 |
DE112012004747B4 (de) | 2023-03-09 |
GB201410572D0 (en) | 2014-07-30 |
US9063772B2 (en) | 2015-06-23 |
JP2015505392A (ja) | 2015-02-19 |
GB2511968A (en) | 2014-09-17 |
US20150026684A1 (en) | 2015-01-22 |
CN103975307B (zh) | 2017-05-31 |
US20150248306A1 (en) | 2015-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103975307A (zh) | 分布式虚拟机中本机接口的隐藏式自动数据镜像 | |
CN112328224B (zh) | 业务接口的对接方法、装置、存储介质以及电子设备 | |
CN111190586A (zh) | 软件开发框架的搭建及使用方法、计算设备和存储介质 | |
CN108008911A (zh) | 读写请求处理方法及装置 | |
CN105493067A (zh) | 应用上下文转移框架和协议 | |
CN103995748B (zh) | 智能终端的任务处理方法及系统 | |
CN101101550B (zh) | 将新用户界面映射到已有的整合界面的方法和系统 | |
CN104823155B (zh) | 基于存储器的旗语 | |
CN106406925A (zh) | 用于支持在线升级的设备和方法 | |
CN110135770A (zh) | 出库方案的生成方法和装置 | |
CN109818810A (zh) | 一种接入服务器连接优化方法、接入服务器以及通信系统 | |
WO2020014615A1 (en) | System and method for product recognition and assignment at an automated storage and retrieval device | |
CN113420883A (zh) | 一种量子编程框架适配量子计算机的方法以设备 | |
CN112765123A (zh) | 基于OpenStack的MySQL数据库自动创建方法、装置及计算机存储介质 | |
WO2019178534A1 (en) | Simulation system for a production environment and related methods of use | |
CN115794386A (zh) | 虚拟机的资源调用方法、设备及存储介质 | |
US20170286876A1 (en) | Systems, devices, and methods for generating a route for relocating objects | |
CN115390958A (zh) | 一种任务处理方法和装置 | |
CN114372748A (zh) | 用于无人车的派单配送方法及装置 | |
CN114090083A (zh) | 一种可视化组件配置方法、装置、设备及存储介质 | |
CN116798139B (zh) | 设备交易方法、装置、计算机设备和存储介质 | |
CN114936903A (zh) | 订单数据处理方法、系统、计算机设备和存储介质 | |
CN102117220B (zh) | 清空内存数据的方法和装置 | |
CN114138507A (zh) | Python程序服务化方法、装置及计算机可读存储介质 | |
CN112693690A (zh) | 确定封装方式的方法、装置、电子设备和存储介质 |
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 |