CN101283344B - 具有增强的存储器清除的多计算机系统 - Google Patents

具有增强的存储器清除的多计算机系统 Download PDF

Info

Publication number
CN101283344B
CN101283344B CN200680037516.7A CN200680037516A CN101283344B CN 101283344 B CN101283344 B CN 101283344B CN 200680037516 A CN200680037516 A CN 200680037516A CN 101283344 B CN101283344 B CN 101283344B
Authority
CN
China
Prior art keywords
machine
computing machine
memory location
class
computing
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.)
Expired - Fee Related
Application number
CN200680037516.7A
Other languages
English (en)
Other versions
CN101283344A (zh
Inventor
约翰·马修·霍尔特
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.)
Waratek Pty Ltd
Original Assignee
Waratek Pty Ltd
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
Priority claimed from AU2005905581A external-priority patent/AU2005905581A0/en
Application filed by Waratek Pty Ltd filed Critical Waratek Pty Ltd
Publication of CN101283344A publication Critical patent/CN101283344A/zh
Application granted granted Critical
Publication of CN101283344B publication Critical patent/CN101283344B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems

Abstract

公开在多计算机环境中仅对一些存储器位置进行的更新,其中在所述多计算机环境中,至少一个应用程序(50)在每个均具有本地存储器的多个计算机M1、M2......Mn上同时地执行。在所述本地存储器中的存储器位置(A、B、D、E、X)被分成两组。第一组存储器位置(X1、X2、......Xn,A1、A2、......An)每个均可被其它计算机访问。第二组存储器位置(B、E)每个均仅可被具有包含所述存储器位置的本地存储器的计算机访问。仅在第一组中的存储器位置的内容的变化被发送到所有其它计算机。公开了一种降级机制,以在应用程序执行表示所述第一组中的存储器位置不再被另一计算机中的另一存储器位置所引用的情况下,将第一组中的存储器位置降级到第二组中。

Description

具有增强的存储器清除的多计算机系统
技术领域
本发明涉及计算,尤其涉及经由通信网络互连的多个计算机的同时操作。
背景技术
以本申请人的名义公布的、公布号为WO 2005/103926的国际专利申请PCT/AU2005/000580(代理所卷号为5027F-WO)(公布号为2005-0262313的美国专利申请11/111,946与其对应)公开了被编写成仅在单计算机上执行的应用程序的不同部分如何能够在多个计算机的对应的不同计算机上基本同时地操作。该同时操作到本申请的优先权日为止尚未在商业上使用。题目为“Computer Architecture Method of Operation forMulti-Computer Distributed Processing and Co-ordinated Memory andAsset Handling”的美国专利申请11/259885所对应的国际专利申请PCT/AU2005/001641(代理所卷号为5027F-D1-WO),以及在本申请人名义下的、截至本申请的优先权日未公布的国际专利申请PCT/AU2006/000532(代理所卷号为5027F-D2-WO)还揭示了更多的细节。上述每一个在先申请的说明书内容通过交叉引用全部结合在本说明书中。
简要地说,上述专利说明书公开了被编写成仅在单计算机上操作的至少一个应用程序能够在每个均具有独立的本地存储器的若干计算机上被同时操作。该程序的操作所需的存储器位置在每个计算机的独立的本地存储器中被复制。每次在应用程序将新数据写到任一复制的存储器位置时,传输该新数据,并且将其存储在每个计算机的每个对应的存储器位置。因此,不考虑可能的传输延迟,每个计算机的本地存储器与每个其它计算机的本地存储器的内容基本相同,并且被更新以保持如此。由于所有应用程序通常读取数据比它们产生待写的新数据要频繁得多,所以上述方案使得能够在计算速度方面实现较大的优势。尤其是,该策略使得通过商用通信网络互连的两个或更多商用计算机能够同时操作,从而在被编写成仅在单计算机上执行的应用程序下运行。
在许多情况下,上述方案能令人满意地工作。这尤其适用于程序员意识到可能有更新延迟并因而可调整程序的流程以将其解决的情况。然而,存在使用陈旧的内容或值而不是最新的内容而可能引起问题的情况。
上述通过引用并入的说明书公开了延迟对全部对应的存储器位置的清除,直到全部计算机已停止访问特定存储器位置。一旦最后的计算机不再需要访问特定的本地存储器位置,该本地存储器位置可以被清除(或回收),并且全部其它机器上的全部对应的存储器位置也可以被清除(或回收)。
本发明的目的是希望加速多计算机系统中本地存储器位置的清除或回收,从而允许这样的存储器位置更快地被重新分配给未来的任务。
发明内容
根据本发明的第一方面,公开了一种禁用固有存在于多个计算机的每一个计算机中的本地存储器清除过程的方法,所述多个计算机中每个计算机具有自己的对应的独立本地存储器,每个计算机基本同时地执行被编写成在仅仅单个计算机上执行的应用程序的对应的不同部分,且每个计算机通过通信网络连接以允许对应的存储器位置的更新,所述方法包括步骤:
(i)将所述本地存储器的存储器位置分为第一可达性类和第二类,在第一可达性类中,本地存储器位置在所述多个计算机中的被选中的计算机或全部计算机上被复制,因此需要通过所述通信网络,用能访问的其它计算机的对应存储器位置的变化来进行更新,以维护基本存储器一致性,在第二类中,本地存储器位置只存在于本地计算机中,因此不需要更新;
(ii)对于所述第二类存储器位置,允许所述固有本地存储器清除过程自由操作;
(iii)对于所述第一可达性类存储器位置,禁用所述固有本地存储器清除过程;和
(iv)将所述第一类可达性存储器位置中不能被所述多个计算机中除具有可降级第一类存储器位置的本地计算机之外的任何计算机所引用的任何第一可达性类存储器位置从所述第一可达性类降级到所述第二类。
根据本发明的第二方面,公开了一种清除过程被修改的多计算机系统,在该多计算机系统中,多个计算机每个均具有其对应的独立本地存储器,每个均具有固有的本地存储器清除过程,每个均基本同时地执行被编写成在仅仅单个计算机上执行的应用程序的对应的不同部分,且每个均通过通信网络连接以允许对应存储器位置的更新,所述系统包括可达性装置,以将所述本地存储器的存储器位置分类为第一类和第二类,在第一类中,本地存储器位置在所述多个计算机中的被选中的计算机或全部计算机上被复制,因此需要通过所述通信网络,用其它计算机的对应存储器位置的变化来进行更新,以维护基本存储器一致性,在第二类中,本地存储器位置只存在于本地计算机中,因此不需要更新;且所述系统包括禁用装置,其连接到所述可达性装置并连接到所述多个计算机中的每一个计算机,以仅关于所述第一分类中的存储器位置禁用所述固有的本地存储器清除过程,且所述可达性装置包括降级装置,来将所述第一类存储器位置中不能被所述多个计算机中除具有可降级第一类存储器位置的本地计算机之外的任何计算机所引用的任何第一类存储器位置从所述第一类降级到所述第二类。
根据本发明的第三方面,公开了一种用于与至少一个其它计算机合作以便执行以上方法或形成以上系统的单个计算机。
根据本发明的第四方面,公开了一种计算机程序产品,其包括存储在存储介质中且用于使多个计算机执行以上方法的程序指令集。
根据本发明的第五方面,公开了通过通信网络互连并用于保证执行以上方法的多个计算机。
附图说明
图1A示意性示出了被布置成运行JAVA代码从而构成单JAVA虚拟机的现有技术计算机;
图1B是类似于图1A的图,但是图解了代码的初始加载;
图1C图解了每个均为JAVA虚拟机的多个计算机形成多计算机系统的互连;
图2示意性图解了“n”个运行应用的计算机,至少一个附加的服务器机器X作为服务器与这些计算机连接;
图3是所有多个机器中的存储器位置的示意图,示出了包含类和对象的存储器位置;
图4是示出图3的各存储器位置及其被到达的能力的单个可达性表;
图5示出与图4的单个表相对应的多个可达性表;
图6是与图3类似的图,且示出不再指向存储器位置A的存储器位置X;
图7是对应于图6的单个可达性表;
图8示出对应于图7的多个可达性表;
图9是与图3和图6类似的、示出一个存储器位置的回收的存储器图;
图10和图11分别示出与图9的存储器变化相对应的单个和多个可达性表;
图12示出另一个存储器变化;以及
图13和图14分别示出与图12的存储器变化相对应的单个和多个可达性表。
具体实施方式
各实施例将参照JAVA语言进行描述,然而,本领域技术人员应当理解,本发明不局限于该语言,特别地,可用于其它语言(包含过程性语言、声明性语言和面向对象语言),包含MICROSOFT.NET平台和体系结构(Visual Basic、Visual C和Visual C++,以及Visual C#)、FORTRAN、C、C++、COBOL、BASIC等等。
现有技术中已知的是提供通过建立图1A中所示的虚拟机来利用特定语言的应用程序的单计算机或机器(由各制造商中的任何一个所生产,并且具有以各种不同语言中的任何一种语言操作的操作系统(或者等同控制软件或其它机制))。
图1A的代码和数据以及虚拟机配置或方案采取用JAVA语言编写并且在JAVA虚拟机61内执行的应用代码50的形式。因而在应用的期望语言为JAVA语言的情况下,使用JAVA虚拟机,其中JAVA虚拟机能够运行JAVA形式的代码,而不论机器制造商和计算机或机器的内部细节如何。有关更多细节,参见由美国Sun Microsystems公司的T.Lindholm和F.Yellin所著的“The JAVA Virtual Machine Specification”第二版,其通过引用结合于此。
根据本发明的实施例,通过提供如图1B所示被方便地称为“分布式运行时”或“分布式运行时系统”DRT 71的附加设备,改进图1A的常规技术方案。
图1B和1C中,通过由箭头75或75A或75B所示的加载过程,应用代码50被加载到与分布式运行时系统71合作的JAVA虚拟机M1、M2、......、Mn上。如此处所使用的,术语“分布式运行时”和“分布式运行时系统”实质上是同义的,并且通过阐述而不是限制,通常被理解成包含支持在特定平台上运行的、用特定语言编写的软件的库代码和进程。此外,分布式运行时系统还可以包含支持在特定分布式计算环境内运行的、用特定语言编写的软件的库代码和进程。运行时系统(无论是否是分布式运行时系统)通常处理程序与操作系统之间的接口的细节,例如系统调用、程序启动和终止、以及存储器管理。为说明背景,常规的分布式计算环境(DCE)(其不提供本发明优选实施例中所使用的本发明的分布式运行时或分布式运行时系统71的能力)可以从开放软件基金会得到。该分布式计算环境(DCE)执行一种针对在机器上运行的软件的计算机到计算机的通信形式,但是除其许多限制之外,其不能实现所期望的修改或通信操作。除其功能与操作之外,优选的DRT 71协调多个机器M1、M2、......、Mn之间的特定通信。此外,优选的分布式运行时71在JAVA应用50的由箭头75A或75B所示的在图1C的每个JAVA虚拟机72或机器JVM#1、JVM#2、......、JVM#n上的加载过程期间开始运行。根据此处所提供的描述应当理解,虽然许多示例和描述被提供成与JAVA语言和JAVA虚拟机相关,以使得读者能了解具体例子的益处,但是本发明不局限于JAVA语言或JAVA虚拟机,或者任何其他语言、虚拟机、机器或者操作环境。
图1C以改进形式示出了每个如图1B所示的JAVA虚拟机的方案。显然,相同的应用代码50被加载到每个机器M1、M2...Mn上。然而,各机器M1、M2...Mn之间的通信由箭头83表示,并且虽然通过机器硬件物理上传送,但是有利地被每个机器内的各自DRT 71/1...71/n所控制。因而,实际上这可以从概念上理解成经由网络或其它通信链路53而相互通信的DRT 71/1,...71/n,而不是自身或彼此直接通信的机器M1、M2...Mn。所设想和包含的是机器M1、M2...Mn或DRT 71/1、71/2...71/n之间的这种直接通信,或者这样的通信的组合。优选的DRT 71提供独立于传送、协议和链接的通信。
一个公共应用程序或应用代码50,及其可执行版本(可能具有修改)在多个计算机或机器M1、M2...Mn上同时或并发执行。应用程序50被编写为在单机器或计算机上执行(或者在模拟单计算机操作的上述专利申请的多计算机系统上操作)。实质上,改进的结构是在每个单独机器上复制相同的存储器结构和内容。
术语“公共应用程序”应被理解为是指被编写成在单机器上操作的,且在多个计算机或机器M1、M2...Mn中的每一个上、或者可选地在所述多个计算机或机器M1、M2...Mn的某个子集的每一个上全部或部分地加载和/或执行的应用程序或应用程序代码。换句话说,具有以应用程序代码50表示的公共应用程序。其为单个拷贝,或每个均被单独修改以生成应用程序或程序代码的修改拷贝或版本的多个相同拷贝。于是每个拷贝或实例被准备以在对应的机器上执行。在它们被修改之后,从它们执行类似的操作并且彼此一致且连贯地运行的意义上来说,它们是公共的。应当理解,实现本发明的实施例的多个计算机、机器、信息设备等可以任选地连接到或耦合到未实现本发明的实施例的其它计算机、机器、信息设备等。
在每个机器上运行相同的应用程序50(例如并行合并排序、计算流体动力学应用或数据挖掘应用),但是该应用程序的可执行代码根据需要在每个机器修改,使得每个机器上的每个执行实例(拷贝或复本)使其在该特定机器上的本地操作与其它机器上的相应实例(拷贝或复本)的操作协调,使得它们以一致、连贯和协调的方式一起工作,并且看起来像应用的一个全局实例(即“元应用”)。
相同或基本相同的应用代码的各拷贝或复本,每个被加载到互操作且相连接的机器或计算机中对应的一个上。由于每个机器或计算机的特性可能不同,所以应用代码50可在加载之前被修改、在加载过程期间被修改、或者在加载过程之后被修改(虽然有一些缺点),以在每个机器上提供应用代码的定制或修改。不同机器上的程序或应用代码之间的一些不同点可以是允许的,只要能够保持本文所述的其它对互操作性、一致性和连贯性的要求。在下文将会明白,机器M1、M2...Mn中的每个机器,因而全部机器M1、M2...Mn具有相同或基本相同的应用代码50,其通常具有可以是特定于机器的修改。
在每个机器M1、M2...Mn上的应用代码50(或其相关部分)的加载之前、加载期间、或执行前的任何时候,每个应用代码50由对应的修改器(modifier)51根据相同的规则(或基本相同的规则,因为在每个修改器51/1、51/2...51/n内允许小的优化改变)来修改。
机器M1、M2...Mn中的每个机器与相同的(或基本相同或类似的)修改器51(在某些实施例中被实现为分布式运行时或DRT71,而在其它实施例中被实现为应用代码和数据50的附件,并且也能够在JAVA虚拟机自身内实现)一起操作。因而,所有的机器M1、M2...Mn都具有针对所需每个修改的相同的(或基本相同或类似的)修改器51。例如,对于存储器管理和复制、初始化、结束、和/或同步可能需要不同的修改(尽管可能不是所有实施例都需要所有这些修改类型)。
存在修改器51和分布式运行时71的可替选实现。例如,如图1C中虚线所示,修改器51可以被实现为分布式运行时71的部件,或分布式运行时71内部的部件,因此DRT 71可实现修改器51的功能和操作。可替选地,修改器51的功能和操作可以在用于实现DRT 71的结构、软件、固件或其它装置之外实现,例如在代码和数据50内,或者在JAVA虚拟机自身内。在一个实施例中,修改器51和DRT 71两者都以提供DRT和修改器的功能的单段计算机程序代码来实现或编写。在这种情况下,修改器功能和结构实际上被包含到DRT中。与其实现无关地,修改器功能和结构负责修改应用代码程序的可执行代码,而分布式运行时功能和结构负责实现各计算机或机器两者和两者以上之间的通信。在一个实施例中,通信功能通过每个机器上的DRT的计算机程序代码内的中间协议层来实现。例如,DRT可以用JAVA语言来实现通信栈,并使用传输控制协议/网际协议(TCP/IP)来提供机器之间的通信或对话。这些功能或操作可以用各种方法来实现,并且根据本文提供的描述应当理解,这些功能或操作如何确切地被实现,或者在结构和/或过程性元素之间或在计算机程序代码或数据结构之间如何被确切划分对本发明来说并不是重要或至关重要的。
然而,在图1C所示的方案中,提供了多个单独计算机或机器M1、M2...Mn,其中每个都经由通信网络53或其它通信链路互连。每个单独计算机或机器都设置有对应的修改器51。每个单独计算机还设置有连接到通信网络的通信端口。通信网络53或路径可以是任何电子信令、数据、或数字通信网络或路径,并且优选为慢速,因而成本低的通信路径,例如因特网上的、或者包含ETHERNET或INFINIBAND的任何常见组网结构及其扩展和改进上的网络连接。优选地,计算机设置有与通信网络53连接的一个或多个公知通信端口(例如CISCO Power Connect 5224交换机)。
由于上述方案,如果机器M1、M2、......、Mn中的每个机器都具有例如10MB的内部或本地存储器容量,则应用代码50整体上可用的总存储器空间并不是如所期望的那样为10MB乘以机器数量。也不是所有n个机器的内部存储器容量的加性组合。相反,其为10MB,或者大于10MB但是小于n×10MB的某个数。在各机器的内部存储器容量不同(这是允许)的情况下,于是在一个机器中的内部存储器小于至少一个其它机器的内部存储器容量的情况下,当这样的存储器(或其一部分)被作为“公共”存储器(即机器M1...Mn的每个机器上的类似等同存储器),或相反被用于执行公共应用代码时,任何一个机器的最小存储器的大小可用作各机器的最大存储器容量。
然而,尽管对待每个机器的内部存储器的方式可能最初看起来是性能的可能约束,但是,在下文中将会理解这如何导致操作和性能的提高。当然,每个机器M1、M2...Mn都有专用的(即非公共的)内部存储器容量。各机器M1,M2,...Mn的专用内部存储器容量通常近似相等,但是也不一定如此。例如,当多计算机系统是利用由不同实体所拥有或操作的现有计算机、机器或信息设备来实现或组成时,内部存储器容量可能是相当不同的。另一方面,如果正在实现一个新的多计算机系统,则每个机器或计算机优选为选择具有相同的内部存储器容量,但不一定如此。
应当理解,每个机器的独立本地存储器仅仅代表该机器总存储器中被分配给应用程序的在该机器上运行的部分的那部分存储器。因而,其它存储器将被该机器的操作系统以及与应用程序50无关的其它计算任务所占用。
原型多计算机系统的非商业操作表明,并不是该系统中每个机器或计算机都使用或需要引用(例如,具有每个可能的存储器位置的本地复本)每个可能的存储器位置。结果,只要每个机器的本地存储器对于该机器的操作是足够的,则无需每个机器的本地存储器与每个其它机器相同,就可以操作多计算机系统。也就是说,假如特定机器不需要引用(例如具有一些特定存储器位置的本地复本)一些特定存储器位置,则那些特定存储器位置在该特定机器中未被复制是无关紧要的。
选择每个机器中内部存储器的量以在每个机器中以及所连接或耦合的多个机器、计算机或信息设备M1、M2、......、Mn的星座或网络上达到期望性能等级也是有利的。在描述了这些内部和公共存储器考虑因素后,根据本文提供的描述应当理解,机器之间可以是公共的存储器的量并不是限制。
在一些实施例中,多个单独计算机或机器的一些或全部可以被包含在单个外壳或机架(例如由Hewlett-Packard Development公司,Intel公司,IBM公司等制造的所谓“刀片服务器”)、由Intel、AMD或其它公司制造的多处理器(例如对称式多处理器SMP)或多核处理器(例如双核处理器以及芯片多线程处理器)内,或者被实现在单个印刷电路板上或甚至在单个芯片或芯片组内。类似地,还包含具有多核,多CPU的或其它处理逻辑的计算机或机器。
当用非JAVA语言或应用代码环境来实现时,通用平台和/或虚拟机和/或机器和/或运行时系统能够操作该平台和/或虚拟机和/或机器和/或运行时系统环境的语言(例如,可能包含但不局限于源代码语言、中间代码语言、目标代码语言、机器代码语言以及任何其它代码语言中的任何一个或多个)的应用代码50,并且不论机器或处理器制造商以及机器的内部细节如何,利用该平台和/或虚拟机和/或机器和/或运行时系统和/或语言体系结构。还应当理解,平台和/或运行时系统可包含虚拟机和非虚拟机软件和/或固件体系结构,以及硬件和直接硬件编码的应用和实现。
对于更一般的虚拟机或抽象机环境,以及对于可不使用或要求使用类和/或对象的目前和将来的计算机和/或计算机器和/或信息设备或处理系统,本发明结构、方法和计算机程序以及计算机程序产品仍然适用。不使用类和/或对象的计算机和/或计算机器的例子例如包含由Intel公司等制造的x86计算机体系结构,由Sun Microsystems公司等制造的SPARC计算机体系结构,由IBM公司等制造的Power PC计算机体系结构,以及由Apple Computer公司等制造的个人计算机产品。
对于不使用类或对象的概念的这些类型的计算机、计算机器、信息设备以及在其上实现的虚拟机或虚拟计算环境,可概括为例如包含基本数据类型(例如整型数据类型,浮点数据类型,长整型数据类型,双精度数据类型,串数据类型,字符数据类型和布尔数据类型),结构化数据类型(例如数组和记录),派生的类型,或者过程性语言或其它语言或环境的其它代码或数据结构,如函数、指针、组件、模块、结构、引用和联合。当这些结构和过程按需要组合应用时,它们维护计算环境,其中在该计算环境下,计算机或计算环境的存储器位置、地址范围、对象、类、资产、资源或任何其它过程或结构方面,在多个单独机器M1、M2...Mn上以协调的、连贯的和一致的方式按需要被产生、维护、操作和去活或删除。
应用代码50的这种分析或细查可发生在加载应用代码50之前,或者在应用代码50加载过程期间,或者甚至在应用代码50加载过程之后(或者这些情况的某种组合)。这可被比作改写(instrumentation)、程序转换、翻译、或者编译过程,因为应用代码可用附加的指令编写,和/或由保留含义的程序操纵来修改,和/或可选地从输入代码语言翻译成不同的代码语言(例如,从源代码语言或中间代码语言转换到目标代码语言或机器代码语言)。关于这一点,应当理解,术语“编译”通常或按常规涉及代码或语言上的改变,例如从源代码到目标代码,或者从一种语言到另一种语言。然而,在这种情况下,术语“编译”(及其语法上的等同内容)未被如此限制,并且也可以包含或包括相同代码或语言内的修改。例如,将编译及其等同内容理解成包括普通编译(例如,但不限于从源代码到目标代码)和从源代码到源代码的编译,以及从目标代码到目标代码的编译,以及其中的任何变更组合。还包含所谓的“中间代码语言”,其为一种“伪目标代码”。
举例而言,但非限制性地,在一个实施例中,对应用代码50的分析或细查发生在应用程序代码的加载期间,应用程序代码的加载是例如由操作系统从硬盘或其它存储设备、介质或源中读取应用代码50,并且将其拷贝到存储器中,以及准备开始执行该应用程序代码而实现的。在另一个实施例中,在JAVA虚拟机中,分析或细查可发生在java.lang.ClassLoader.loadClass方法(例如“java.lang.ClassLoader.loadClass()”)的类加载过程期间。
可替选地,或者此外,对应用代码50(或应用代码的一部分)的分析或细查甚至可发生在应用程序代码加载过程之后,例如在操作系统已将应用代码加载到存储器中之后,或者任选地,甚至在应用程序代码的相关对应部分的执行已经开始之后,例如在JAVA虚拟机已经通过“java.lang.Classloader.loadClass()”方法将应用代码加载到虚拟机中并且任选地开始执行之后。
计算领域的普通技术人员会知道,各种可能的技术可以用于修改计算机代码,这些技术包括但不限于改写、程序转换、翻译或编译装置和/或方法。
一种这样的技术是,在无需在先或之后改变应用代码的语言的情况下,对应用代码进行修改。另一种这样的技术是将原始代码(例如,JAVA语言源代码)转换成中间表示(或中间代码语言,或伪码),例如JAVA字节代码。一旦该转换发生,就对字节代码进行修改,然后转换可被逆转。这提供了被修改JAVA代码的所期望的结果。
另一个可能的技术是直接从源代码或者通过上述中间语言或通过一些其它中间手段,将应用程序转换到机器代码。然后,在加载和执行机器代码之前修改机器代码。另一个这样的技术是将原始代码转换成中间表示,该中间表示从而被修改并且随后被转换成机器代码。
本发明包括所有这样的修改途径,以及两个、三个甚至更多这样的途径的组合。
DRT 71或其它代码修改装置负责在单独机器M1、M2...Mn中每个机器上建立或复制使得多个机器能互操作的存储器结构和内容。在一些实施例中,此复制的存储器结构相同。而在其它实施例中,此存储器结构会有部分相同,而其它部分不同。在另外的其它实施例中,存储器结构仅在格式或存储约定(如大端字节序(Big Endian)或小端字节序(Little Endian)格式或约定)方面不同。
当这些结构和过程按需要组合应用时,它们维护计算环境,其中在该计算环境下,计算机或计算环境的存储器位置、地址范围、对象、类、资产、资源或任何其它过程或结构方面,在多个单独机器M1、M2...Mn上以协调的、连贯的和一致的方式按需要被产生、维护、操作和去活或删除。
因此,术语“一个”、“单”和“公共”应用代码或程序包含以下情形,在该情形中,所有机器M1、M2...Mn操作或执行相同的程序或代码而不是不同的(和无关的)程序,换言之,相同或基本相同的应用代码的拷贝或复本被加载到互操作且相连接的机器或计算机中的每一个上。
在使用分布式软件的常规方案中,从一个机器的软件到物理上位于另一个机器上的存储器的存储器访问通常通过互连各机器的网络进行。因而,每个机器的本地存储器都能够被任何其它机器所访问,因此不能说是独立的。然而,因为对物理上位于另一个计算机上的存储器的读和/或写存储器访问需要利用互连各计算机的慢速网络,所以在这些配置中,这样的存储器访问可导致存储器读/写处理操作中的实质性延迟,可能大约为106-107个机器中央处理单元的周期(假定为同时期的处理器速度)。最终,该延迟取决于多个因素,例如通信网络的速度、带宽和/或时延。这很大程度上说明了现有技术方案中多个互连机器的低性能。
然而,在本方案中,因为所有存储器位置(或所有存储器位置的某个子集)的当前值被存储在产生读存储器需求的处理所执行的机器上,所以对存储器位置或数据的所有读取都在本地得到满足。
类似地,因为所有存储器位置(或所有存储器位置的某个子集)的当前值被存储在生成写存储器需求的处理所执行的机器上,所以存储器位置或数据的所有写入都在本地得到满足。
这样的本地存储器读和写处理操作通常在102-103个中央处理单元周期内满足。因而实际上,涉及和/或写的存储器访问的等待基本上较少。此外,每个机器的本地存储器不能被任何其它机器访问,因此可被称作是独立的。
本发明独立于传送、网络和通信路径,并且不依赖于各机器或各DRT之间的通信如何进行。在一个实施例中,甚至机器或DRT之间的电子邮件(email)交互也可以满足通信的需要。
结合以上所述,从图2中可以看出,有若干机器M1、M2、...Mn,“n”为大于或等于2的整数,图1的应用程序50在机器M1、M2、...Mn上基本上同时运行。这些机器按层次顺序被分配以数字1、2、3、......等等。该顺序通常是循环的或闭合的,使得当机器2和机器3在层次上相邻时,机器“n”和机器1也是如此。优选地,存在另一个机器X,其被提供来使各种内务处理功能(housekeeping functions)能被执行,例如充当锁服务器。特别地,所述另一个机器X可以是低价机器,并且比可能具有令人满意的属性如处理机速度的其它机器便宜很多。此外,一个附加的低价机器(X+1)优选地可用于在机器X出现故障时提供冗余。当提供两个这样的服务器机器X和X+1时,为了简单,它们优选地作为集群结构的双机器来操作。根据本发明,必要时,机器X和X+1能够作为多计算机系统来操作。然而,这一般会导致不期望的复杂度。如果未提供机器X,则其功能(例如内务处理功能)由其它机器中的一个、一些或全部机器来提供。
现在参考图3,多个机器M1、M2...Mn中的每一个机器(如果存在任何服务器机器X,则不同于任何服务器机器X)具有其被示意性示出的存储器位置。对于机器M1,存在类X1以及对象A1和B。对于机器M2,存在类X2(与机器M1中的类X1相同)以及对象A2和D。机器M2中的对象A2与机器M1中的对象A1相同。对于机器Mn,存在类Xn以及对象An和E。类Xn和对象An分别与类X1和X2以及对象A1和A2相同。因为机器M1、M2和Mn中的每一个机器都能够从存储器位置X和A读取和向存储器位置X和A写入,所以这些存储器位置申的每一个存储器位置的边界都用双线表示。
优选地,方便的是由图2的服务器机器X维护表,该表列出每个存储器位置以及能够访问该表中的每个存储器位置的机器。这样的表被称作可达性表,且在图4中示出。图4的表中的第一行涉及存储器位置A,其能够被机器M1、M2和Mn访问。图4的表中的第二行涉及存储器位置B,其仅能够被机器M1访问。类似地,对象D仅能够被机器M2访问,而对象E仅能够被机器Mn访问。然而,类X能够被所有机器M1、M2和Mn访问。
可以设置单个可达性表,其位于服务器机器X中且由服务器机器X维护。然而,计算机系统也可以在没有服务器机器X的情况下操作,在这种情况下,期望每个机器操作其自己的可达性表。图5示出在对应于图4的情况下各机器的各可达性表。
在上述的多机器环境中,如果类X或对象A的内容由于被各机器中的一个机器写入而改变,则有必要通过网络53将该变化发送给所有其它机器。然而,因为对象B、D和E每个仅能够被单个机器访问,所以,由于这些存储器位置仅能够被其本地机器访问,在建立或更新这些存储器位置的内容方面的考虑较少。
当类X需要引用对象A时,则称类X指向对象A。在图3中,这通过分别从类X1、X2和Xn指向对象A1、A2和An的箭头表示。
现在参考图6,在应用程序50的执行过程中,由机器Mn执行分配操作,在该操作中,以空或“取空值”的引用来覆写从类Xn到对象An的引用。这样,类Xn不再指向对象An。与该操作对应,机器M1和M2上的类X1和X2被更新为不再分别引用对象A1和A2。在存在服务器机器X的情况下,该改变由服务器机器X执行;或者在不存在服务器机器X的情况下,由机器Mn的DRT 71/n执行。
图7和图8的表中分别示出了在图6中所示变化之后的情况。然而,由于三个对象A1、A2和An继续存在,且继续可以由机器M1、M2和Mn访问,所以没有实际的改变。因此,图7和图8的表与图4和图5的表相同。因此,尽管类X不再指向对象A,但是,对例如对象A2的任何改变必须被传达给机器M1和Mn以更新对象A1和An。
图9示出在机器Mn的操作系统或者DRT 71/n确定机器Mn上不再需要对象An之后的情况。这时,机器Mn自由回收当前被对象A的本地拷贝(An)占用的存储器。这样的存储器回收系统是计算机中固有的,并且是保证本地存储器不因未被使用的部分而变得混乱所必须的。另外,这样的系统在后台操作,因此,程序员可以相信不用的对象等会被及时清除。因此,程序员不需要采取特定的动作来删除或结束不用的对象。
当在机器Mn上发生这样的变化时,更新图10的单个可达性表或图11中的机器Mn的可达性表,以指示在机器Mn上对象A不再可被访问。注意,在这个阶段,对象A仍然被认作是共享的,因为在这个示例中至少两个机器M1和M2仍能够访问对象A。因此,在图9中,对象A仍然由双线包围。因此,必须对A2进行对A1的任何改变,反之亦然。
现在参考图12,这时或之后某时间,机器M2例如确定机器M2不再需要或本地使用机器M2上的对象A2。因此,机器M2的操作系统或DRT 71/2可以执行固有的过程来回收当前由全局对象A的本地拷贝A2所使用的存储器。
结果,如图13和图14所示,修改可达性表,使得对象A不再被记录为可被机器M2访问。结果,对象A在图12中被示出为仅仅被单线所包围。即,只有机器M1可以访问对象A(所以,其在图12中可以仅仅称为A而不是A1--因为术语A1会暗示对象在机器M1上的拷贝还存在于至少一个其它机器上)。
结果,如果需要,可以完全删除可达性表中对对象A的引用。更重要的是,对象A的变化不需要被传达到任何其它机器,并且如果机器M1不再需要引用对象A,则可以从机器M1中删除对象A以回收先前被对象A占用的存储器空间。
上述详细描述涉及存储器位置,然而,其同样适用于结构、资产或资源(其在JAVA中被称为类或对象)。这些将已被分配了能够被所有机器全局使用的(全局)名字或标记(因为应当理解,不同机器的本地存储器结构可能是不同的)。因而,分配给一个机器中具体存储器位置的本地或实际名字可能不同于分配给另一个机器中对应的存储器位置的本地名字。当类或对象被最初初始化时,该全局名字分配优选地发生在加载时的编译过程期间。这通过由服务器机器X维护的表,可以非常方便地实现。该表也可以包含可达性数据。
本领域的普通技术人员应当理解,可达性数据使结构、资产或资源(即存储器位置)能被分成两个类别或类。第一类别由能够被所有机器访问的位置构成。关于这样的存储器位置所执行的写动作有必要被分布到所有的机器,使得所有对应的存储器位置具有相同的内容(由于传输更新数据造成的延迟除外)。然而,关于第二类别,因为这些存储器位置仅可被本地计算机访问,所以对这些存储器位置的写动作不需要分布到所有其它机器,也不需要在其它机器上存在对应的存储器位置。作为该分类的结果,可以快速识别并回收不使用的存储器位置。
前面仅描述了本发明的一些实施例,本领域的技术人员知道,在不偏离本发明的范围的情况下,可以对其进行修改。例如,图4和图7的表每个均示出对应于每个存储器位置的行。实际上,对于仅被其本地机器访问的存储器位置如D和E,在表中根本不必具有行。相反,如果该存储器位置变为可被一个或多个其它机器访问,只创建这样的行。
前面仅描述了本发明的一些实施例,本领域的技术人员知道,在不偏离本发明的范围的情况下,可以对其进行修改。例如,提及JAVA,包含JAVA语言以及JAVA平台和体系结构。
在所有描述的修改实例中,其中应用代码50在加载之前、在加载期间、或者甚至在加载之后但在未修改的应用代码的执行开始之前被修改,应当理解,被修改的应用代码在进行的修改之后取代未修改的应用代码而被加载,以及取代未修改的应用代码而被执行。
可替选地,在修改发生在加载之后以及在未修改的应用代码的执行开始之后的情况下,应当理解,未修改的应用代码可以被对应于进行的修改、所修改的应用代码所整体替换;或者,可替选地,随着对正在执行的未修改应用代码递增地进行修改,未修改的应用代码可以被部分或者递增地替换。无论使用这样的修改途径中的哪种,被进行之后的修改都取代未修改的应用代码而执行。
针对多个机器M1、M2...Mn中的每一个机器上的所有类似等同本地对象(类,资产或资源等)使用全局标识符作为“元名字”或“元标识”的形式是有利的。例如,不必跟踪每个机器上多个类似等同对象的每个类似等同本地对象的每个唯一本地名字或标识,取而代之,可以定义或使用对应于每个机器上的多个类似等同对象的全局名字(例如“globalname7787”),在此情况下每个机器将全局名字与特定的本地名字或对象联系起来(例如“globalname7787”对应于机器M1上的对象“localobject456”,“globalname7787”对应于机器M2上的对象“localobject885”,以及“globalname7787”对应于机器M3上的对象“localobject111”等等)。
根据本文所提供的详细描述,本领域的技术人员还会明白,在由每个DRT 71当最初记录或创建所有对象中的全部或某子集的列表时创建的表、列表或其它数据结构(例如存储器位置或字段)中,对于各个机器M1、M2...Mn上的每个这样的记录的对象,存在在机器M1、M2...Mn中的每个机器上公共或类似的名字或标识。然而,在各个机器中,因为每个机器可能,并且通常会根据其自身的内部处理来存储不同存储器位置处的存储器值或内容,所以对应于指定的名字或标识的本地对象将会或者可能会随时间而变化。因而,每个DRT中的表、列表、或其它数据结构一般会具有对应于单个存储器名字或标识的不同本地存储器位置,但是每个全局的“存储器名字”或标识会具有存储在不同本地存储器位置中的相同的“存储器值或内容”。所以,对于每个全局名字,会存在一族对应独立本地存储器位置,其中在每个计算机中有一个族成员。虽然本地存储器名字可能不同,但是资产、对象、位置等基本上具有相同内容或值。所以族是连贯的。
本文所使用的术语“表”或“表格”意图包括任何列表或有组织的、无论为何种格式、并且在其内可以以有序的方式存储和读出数据的数据结构。
根据本文提供的说明,本领域的普通技术人员也应该明白,应用程序代码50在加载期间的上述修改可以用多种方法或由各种装置来实现。这些方法或装置包含但不局限于至少下列五种方法以及这五种的变型或组合,包含:
(i)加载时的再编译;
(ii)加载之前的预编译过程;
(iii)加载之前的编译;
(iv)“即时(just-in-time)”编译,或
(v)加载后的再编译(但是,例如当在分布式环境中执行相关或对应的应用代码之前)。
通常,术语“编译”意味着代码或语言方面的改变,例如从源代码到目标代码,或从一种语言到另一种语言。显然,在本说明书中,术语“编译”(及其语法上的等同内容)的使用未被如此限制,并且也可以包含或包括相同代码或语言内的修改。
计算机和/或编程技术领域的技术人员应该知道,当附加的代码或指令被插入到已有代码或指令集中以将其修改时,已有代码或指令集很可能需要进一步修改(例如通过对连续指令的再编号),使得偏移,分支、属性、标记(mark up)等被正确处理或满足。
类似地,在JAVA语言中,存储器位置包含例如字段和数组两种类型。以上所述涉及字段,并且数组类型所需的改变基本上是相同的必要变更。并且,本发明同样适用于与JAVA类似的编程语言(包含过程性的、声明性的和面向对象的语言),包括Microsoft.NET平台和体系结构(VisualBasic、Visual C/C++,以及C#),FORTRAN,C/C++,COBOL、BASIC等。
本文所使用的术语“对象”和“类”源自JAVA环境,并且意图包括源自不同环境如动态链接库(DLL),目标代码包,功能单元或存储器位置的类似术语。
关于本发明的实施例描述了各种装置,例如包含但不限于锁装置、分布式运行时装置、修改器或修改装置等。在本发明的至少一个实施例中,这些各种装置中的任何一个或每个可通过在计算机逻辑电路、处理器、ASIC、逻辑或电子电路硬件、微处理器、微控制器或其它逻辑内执行的计算机程序代码语句或指令(可能包括通过多个计算机程序代码语句或指令)来实现,以修改这样的逻辑或电路的操作来实现所述的操作或功能。在另一个实施例中,这些各种装置中的任何一个或每个可以用固件实现,而在其它实施例中,其可以用硬件实现。此外,在本发明的至少一个实施例中,这些各种装置中的任何一个或每个可由计算机程序软件、固件和/或硬件的组合来实现。
上述方法、过程和/或例程中的任何一个和每个可有利地被实现为存储在任何有形介质上或以电子、信号或数字形式存在的计算机程序和/或计算机程序产品。这样的计算机程序或计算机程序产品分别包括指令,和/或被组织成模块、程序、子程序,或者以任何其它方式组织,以便在处理逻辑如计算机、计算机器或信息设备的处理器或微处理器中执行;计算机程序或计算机程序产品修改其在上面执行的计算机的操作,或者修改与该计算机程序或计算机程序产品所在的或在上面执行的计算机相耦合、连接或者以信号通信的计算机上的操作。这样的计算机程序或计算机程序产品修改计算机、计算机器和/或信息设备的操作和体系结构性的结构,以改变计算机的技术操作,并实现本文所述的技术效果。
因此,本发明可包含一种计算机程序产品,其包括一组程序指令,其中该组程序指令存储在存储介质中,或者以任何形式电子地存在,并且可用于使多个计算机执行如本文(包括任一权利要求中)所述的方法、过程、例程等中的任何一个。
此外,本发明包含(但不局限于)多个计算机,或者与经由通信网络或其它通信链路或路径互连、并且每个可用于基本同时或并行地执行被编写成仅在单个计算机上或者在各计算机中对应的不同的计算机上操作的应用代码的相同或不同部分的单个计算机。所述计算机被编程成在被加载计算机程序产品时或者根据后续指令,执行说明书中描述的、或任一权利要求书中提出的任何方法、过程或例程。类似地,本发明在其范围内还包含被布置成与类似的、或基本类似的计算机合作以形成多计算机系统的单个计算机。
总而言之,提供了一种禁用固有存在于多个计算机中的每一个计算机中的本地存储器清除过程的方法,所述多个计算机中每个计算机具有自己的对应的独立本地存储器,每个计算机基本同时地执行被编写成在仅仅单个计算机上执行的应用程序的对应的不同部分,且每个计算机通过通信网络连接以允许对应的存储器位置的更新,所述方法包括步骤:
(i)将所述本地存储器的存储器位置分为第一可达性类和第二类,在第一可达性类中,本地存储器位置在所述计算机中的被选中的计算机或全部计算机上被复制,因此需要通过所述通信网络,用能访问的其它计算机的对应存储器位置的变化来进行更新,以维护基本存储器一致性,在第二类中,本地存储器位置只存在于本地计算机中,因此不需要更新;
(ii)对于第二类存储器位置,允许固有本地存储器清除过程自由操作;
(iii)对于第一类存储器位置,禁用固有本地存储器清除过程;和
(iv)将第一类存储器位置中不能被所述计算机中除具有所述可降级第一类存储器位置的本地计算机之外的任何计算机所引用的任何第一类存储器位置从第一类降级到第二类。
优选地,该方法还包括步骤:
(v)在可达性表中维护关于存储器位置分类的数据。
优选地,该方法还包括步骤:
(vi)维护单个可达性表。
优选地,该方法包括步骤:
(vii)在不构成多个计算机之一且通过通信网络连接到所述多个计算机的服务器计算机上维护单个可达性表。
优选地,该方法还包括步骤:
(viii)维护多个可达性表,每个可达性表在多个计算机中对应的计算机上。
优选地,存储器位置包括资产、结构或资源。
还提供一种计算机程序产品,其包括存储在存储介质中、用于使多个计算机执行以上方法中的任一个方法的程序指令集。
此外,提供了通过通信网络互连并用于保证执行以上方法中的任一个方法的多个计算机。
此外,提供了一种清除过程被修改的多计算机系统,在该多计算机系统中,多个计算机每个均具有其对应的独立本地存储器,每个均具有固有的本地存储器清除过程,每个均基本同时地执行被编写成在仅仅单个计算机上执行的应用程序的对应的不同部分,且每个均通过通信网络连接以允许对应存储器位置的更新,所述系统包括可达性装置,以将所述本地存储器的存储器位置分类为第一类和第二类,在第一类中,本地存储器位置在所述计算机中的被选中的计算机或全部计算机上被复制,因此需要通过所述通信网络,用其它计算机的对应存储器位置的变化来进行更新,以维护基本存储器一致性,在第二类中,本地存储器位置只存在于本地计算机中,因此不需要更新;且所述系统包括禁用装置,其连接到所述可达性装置并连接到所述多个计算机中的每一个计算机,以关于仅在所述第一分类中的存储器位置禁用所述固有的本地存储器清除过程,且所述可达性装置包括降级装置,来将所述第一类存储器位置中不能被所述计算机中除具有所述可降级第一类存储器位置的本地计算机之外的任何计算机所引用的任何第一类存储器位置从所述第一类降级到所述第二类。
优选地,可达性装置包括可达性表,其中维护有关存储器位置分类的数据。
优选地,包括连接到通信网络的服务器计算机,该服务器计算机包括单个可达性表。
优选地,多个计算机中的每一个计算机包括对应的可达性表。
优选地,存储器位置包括资产、结构或资源。
另外,提供一种用于与至少一个其它计算机合作,以便执行以上方法中的任一个方法或形成以上计算机系统的单个计算机。
本文所使用的术语“包括”(及其语法变型)用于表示“具有”或“包含”的包括性含义,而不是用于表示“仅由......组成”的排它性含义。

Claims (11)

1.一种禁用固有存在于多个计算机的每一个计算机中的本地存储器清除过程的方法,所述多个计算机中每个计算机具有自己的对应的独立本地存储器,每个计算机基本同时地执行被编写成在仅仅单个计算机上执行的应用程序的对应的不同部分,且每个计算机通过通信网络连接以允许对应的存储器位置的更新,所述方法包括步骤:
(i)将所述本地存储器的存储器位置分为第一可达性类和第二类,在第一可达性类中,本地存储器位置在所述多个计算机中的被选中的计算机或全部计算机上被复制,因此需要通过所述通信网络,用能访问的其它计算机的对应存储器位置的变化来进行更新,以维护基本存储器一致性,在第二类中,本地存储器位置只存在于本地计算机中,因此不需要更新;
(ii)对于所述第二类存储器位置,允许所述固有本地存储器清除过程自由操作;
(iii)对于所述第一可达性类存储器位置,禁用所述固有本地存储器清除过程;和
(iv)将所述第一可达性类存储器位置中不能被所述多个计算机中除具有可降级第一类存储器位置的本地计算机之外的任何计算机所引用的任何第一可达性类存储器位置从所述第一可达性类降级到所述第二类。
2.根据权利要求1所述的方法,还包括步骤:
(v)在可达性表中维护关于所述存储器位置分类的数据。
3.根据权利要求2所述的方法,还包括步骤:
(vi)维护单个所述可达性表。
4.根据权利要求3所述的方法,包括步骤:
(vii)在不构成所述多个计算机之一且通过所述通信网络连接到所述多个计算机的服务器计算机上维护所述单个可达性表。
5.根据权利要求2所述的方法,还包括步骤:
(viii)维护多个可达性表,每个可达性表在所述多个计算机中对应的计算机上。
6.根据权利要求1-5中任一个所述的方法,其中,所述存储器位置包括资产、结构或资源。
7.一种清除过程被修改的多计算机系统,在该多计算机系统中,多个计算机每个均具有其对应的独立本地存储器,每个均具有固有的本地存储器清除过程,每个均基本同时地执行被编写成在仅仅单个计算机上执行的应用程序的对应的不同部分,且每个均通过通信网络连接以允许对应存储器位置的更新,所述系统包括可达性装置,以将所述本地存储器的存储器位置分类为第一类和第二类,在第一类中,本地存储器位置在所述多个计算机中的被选中的计算机或全部计算机上被复制,因此需要通过所述通信网络,用其它计算机的对应存储器位置的变化来进行更新,以维护基本存储器一致性,在第二类中,本地存储器位置只存在于本地计算机中,因此不需要更新;且所述系统包括禁用装置,其连接到所述可达性装置并连接到所述多个计算机中的每一个计算机,以仅关于所述第一分类中的存储器位置禁用所述固有本地存储器清除过程,且所述可达性装置包括降级装置,来将所述第一类存储器位置中不能被所述多个计算机中除具有可降级第一类存储器位置的本地计算机之外的任何计算机所引用的任何第一类存储器位置从所述第一类降级到所述第二类。
8.根据权利要求7所述的系统,其中,所述可达性装置包括可达性表,该可达性表中维护有关所述存储器位置分类的数据。
9.根据权利要求8所述的系统,包括连接到所述通信网络的服务器计算机,所述服务器计算机包括单个可达性表。
10.根据权利要求8所述的系统,其中,所述多个计算机中的每一个计算机包括对应的可达性表。
11.根据权利要求7-10中任一个所述的系统,其中,所述存储器位置包括资产、结构或资源。
CN200680037516.7A 2005-10-10 2006-10-05 具有增强的存储器清除的多计算机系统 Expired - Fee Related CN101283344B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2005905581A AU2005905581A0 (en) 2005-10-10 Multiple Computer System with Enhanced Memory Clean Up
AU2005905581 2005-10-10
PCT/AU2006/001448 WO2007041763A1 (en) 2005-10-10 2006-10-05 Multiple computer system with enhanced memory clean up

Publications (2)

Publication Number Publication Date
CN101283344A CN101283344A (zh) 2008-10-08
CN101283344B true CN101283344B (zh) 2010-10-06

Family

ID=37942201

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200680037516.7A Expired - Fee Related CN101283344B (zh) 2005-10-10 2006-10-05 具有增强的存储器清除的多计算机系统

Country Status (4)

Country Link
EP (1) EP1934775A4 (zh)
JP (1) JP2009512029A (zh)
CN (1) CN101283344B (zh)
WO (1) WO2007041763A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9235485B2 (en) * 2013-07-22 2016-01-12 International Business Machines Corporation Moving objects in a primary computer based on memory errors in a secondary computer

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86103949A (zh) * 1985-06-12 1986-12-17 株式会社日立制作所 多计算机系统程序管理方法
EP0969377A1 (en) * 1998-06-30 2000-01-05 International Business Machines Corporation Method of replication-based garbage collection in a multiprocessor system
US6865585B1 (en) * 2000-07-31 2005-03-08 Microsoft Corporation Method and system for multiprocessor garbage collection

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3489157B2 (ja) * 1993-11-26 2004-01-19 株式会社日立製作所 分散共有メモリシステムおよび計算機
US5960087A (en) * 1996-07-01 1999-09-28 Sun Microsystems, Inc. Distributed garbage collection system and method
US5832529A (en) * 1996-10-11 1998-11-03 Sun Microsystems, Inc. Methods, apparatus, and product for distributed garbage collection
JP2000076206A (ja) * 1998-08-31 2000-03-14 Fujitsu Ltd 分散領域管理装置および記録媒体
ZA200608766B (en) * 2004-04-22 2008-08-27 Waratek Pty Ltd Modified computer architecture with coordinated objects
US9792134B1 (en) 2012-12-21 2017-10-17 Open Invention Network, Llc Synchronizing settings associated with virtual computing environments

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86103949A (zh) * 1985-06-12 1986-12-17 株式会社日立制作所 多计算机系统程序管理方法
EP0969377A1 (en) * 1998-06-30 2000-01-05 International Business Machines Corporation Method of replication-based garbage collection in a multiprocessor system
US6865585B1 (en) * 2000-07-31 2005-03-08 Microsoft Corporation Method and system for multiprocessor garbage collection

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
EP 0969377 A1,全文.

Also Published As

Publication number Publication date
JP2009512029A (ja) 2009-03-19
CN101283344A (zh) 2008-10-08
EP1934775A4 (en) 2009-01-28
WO2007041763A1 (en) 2007-04-19
EP1934775A1 (en) 2008-06-25

Similar Documents

Publication Publication Date Title
CN103262064A (zh) 分布式计算体系结构
US7581069B2 (en) Multiple computer system with enhanced memory clean up
US7996627B2 (en) Replication of object graphs
CN101283344B (zh) 具有增强的存储器清除的多计算机系统
Salzman et al. Prototypes with multiple dispatch: An expressive and dynamic object model
CN101283342B (zh) 对象图的复制
CN101903869A (zh) 用于统一处理结构化数据和数据压缩的分层区块标识的数据通信
CN101283343B (zh) 具有部分存储器更新的改进的机器体系结构
Grö\e-Rhode Algebra transformation systems and their composition
US8122198B2 (en) Modified machine architecture with partial memory updating
CN101288062B (zh) 开销减少的多机器体系结构
US20080215928A1 (en) Failure resistant multiple computer system and method
Minsky et al. Caml trading–experiences with functional programming on Wall Street
US8209393B2 (en) Multiple machine architecture with overhead reduction
Queinnec Locality, causality and continuations
Cruz et al. Coordinating open distributed systems
Black et al. Extended memory management (xmm): Lessons learned
AU2006301909B2 (en) Modified machine architecture with partial memory updating
Szaday Building blocks for high-performance languages
AU2006303865B2 (en) Multiple machine architecture with overhead reduction
Lu Implementing scoped behavior for flexible distributed data sharing
Clark Evaluating the Performance of Hyperion, a Distributed Shared Memory Implementation of Java
Atitallah et al. Gaspard2 UML profile documentation
Byckling et al. Increasing comprehensibility of object models: Making the roles of attributes explicit in UML diagrams
Watson et al. The NIP parallel object-oriented computational model

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20101006

Termination date: 20151005

EXPY Termination of patent right or utility model