CN101548268B - 更新存储器位置的内容的方法和系统 - Google Patents
更新存储器位置的内容的方法和系统 Download PDFInfo
- Publication number
- CN101548268B CN101548268B CN200780045166.3A CN200780045166A CN101548268B CN 101548268 B CN101548268 B CN 101548268B CN 200780045166 A CN200780045166 A CN 200780045166A CN 101548268 B CN101548268 B CN 101548268B
- Authority
- CN
- China
- Prior art keywords
- value
- machine
- duplicate
- memory location
- memory
- 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
Images
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Mobile Radio Communication Systems (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
公开了一种更新存储器位置的内容的方法和系统,所述方法和系统在通过借以发送存储器更新消息的通信链路互接的至少两个物理位置中的每个处更新至少一个存储器位置的内容,所述方法包括步骤:(i)使验证数据与每个存储器更新消息关联,所述验证数据使得物理位置能够被更新以验证所述更新消息,其中所述验证数据包括指示更新消息序列中对应消息的位置的计数值,其中所述验证数据还包括指示所述更新消息的源的解析计数,以及(ii)不时地复位所述计数值。
Description
技术领域
本发明涉及计算,尤其检测涉及与地址存储器有关的计算活动中的竞争,但不限于这种活动。本发明在通过通信网络互接的、优选为在复制共享存储器结构中操作的多个计算机的同时操作方面找到了具体应用,但本发明不限于此。
背景技术
以本申请人的名义、以公开号WO2005/103926(公开号为2005-0262313的美国专利申请11/111,946与之对应)公布的国际专利申请PCT/AU2005/000580(代理所案号:5027F-WO)公开了被编写为只在单个计算机上运行的应用程序的不同部分怎样基本上同时地在多个计算机中的相应不同计算机上操作。到本申请的优先权日为止,该同时操作尚未商业使用。均以本申请人的名义并且到本申请的优先权日为止均未公布的国际专利申请PCT/AU2005/001641(WO2006/110,937)(代理所案号:5027F-D1-WO)和PCT/AU2005/000532(WO2006/110,957)(代理所案号:5027F-D2-WO)也公开了进一步的细节。这里,出于各种目的,每个上述在先申请的说明书的内容通过交叉索引被整理到本说明书中。
概括地说,上述专利说明书公开了可以同时在均具有独立本地存储器的若干计算机上操作被编写成仅在单个计算机上操作的至少一个应用程序。在每个计算机的独立本地存储器中复制该程序的操作所需的存储器位置。每当应用程序向任何复制的存储器位置写入新数据时,该新数据被传送和存储在每个计算机的每个对应存储器位置。因而,除传输延迟的可能性外,每个计算机具有本地存储器,其内容基本上与每个其它计算机的本地存储器相同并且被更新以保持相同。由于所有应用程序读取数据通常比其导致写入新数据更频繁,所以上述方案允许实现计算速度方面的非常实质性的优点。尤其是,该策略使得能够操作通过商品通信网络互接的两个或更多商品计算机,从而同时根据被编写为仅在单个计算机上运行的应用程序来运行。
在许多情况下,上述方案可令人满意地工作。这特别适用于程序员知道可能有更新延迟并且因而能够调整程序的流程以对此加以应对的情况。然而,在对任意存储器位置进行任何改变时更新每个本地存储器的需要可产生竞争,其中从不同源以同时或准同时的方式更相应存储器位置。这能够产生竞争状态或相似异常状态。这种状态也能够在其它计算、信息处理、电子和电气工程情形中出现。
发明的起源
本发明的起源是至少部分地克服上述困难的期望。
发明内容
根据本发明的第一方面,公开了一种在通过借以发送存储器更新消息的通信链路互连的至少两个物理位置中的每个处更新至少一个存储器位置的内容的方法,所述方法包括步骤:
(i)使验证数据与每个存储器更新消息关联,所述验证数据使得物理位置能够被更新以验证所述更新消息。
根据本发明的另一方面,公开了一种用于在通过借以发送存储器更新消息的通信链路互连的至少两个物理位置中的每个处更新至少一个存储器位置的内容的系统,其中每个所述存储器更新消息具有与之相关的验证数据,所述验证数据使得物理位置能够被更新以验证所述更新消息。
根据本发明的另一个方面,公开了一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和一种检测复本存储器更新中的竞争的方法,其中能够基本上同时地从多个源更新具有特定位置标识符并且在至少两个计算机上复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,
(ii)针对每个复制的存储器位置,存储先前发送或接收的更新的更新 计数,
(iii)比较与要更新的复制存储器位置相关的驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)在所比较的更新计数相同的情况下指示竞争情形。
根据本发明的另一方面,公开了一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和检测复本存储器更新中的竞争的系统,所述系统包括:至少一个存储器位置,其具有特定位置标识符,在至少两个计算机上被复制,并且在机器修改其复本值时被更新以保持基本相似;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新;与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数;比较装置,用于比较先前存储的更新计数和当前所接收的更新信号或分组的更新计数;和与所述比较装置连接的竞争指示装置,用于在所比较的更新计数相同的情况下指示竞争情形。
根据本发明的另一个方面,公开了一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和一种复本存储器更新的方法,其中能够基本上同时地从多个源更新具有特定位置标识符并且在至少两个计算机上复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,
(ii)针对每个复制的存储器位置存储先前发送或接收的更新的更新计数,
(iii)比较与要更新的复制存储器位置相关的当前驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数大于当前驻留更新计数,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,或
(v)如果当前所接收的更新计数小于当前驻留更新计数,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,或
(vi)如果当前所接收的更新计数等于当前驻留更新计数,则指示竞争情形。
根据本发明的另一方面,公开了一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和用于复本存储器更新的系统,所述系统包括:至少一个存储器位置,其具有特定位置标识符,在至少两个计算机上被复制,并且在机器修改其复本值时被更新以保持基本相似;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新;与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数;比较装置,其比较当前所接收的更新计数值和当前驻留更新计数值,并且如果当前所接收的更新计数超过当前驻留更新计数,则用当前所接收的数据内容改写相关复制存储器位置和用当前所接收的更新计数改写当前驻留更新计数,而如果当前所接收的更新计数小于当前驻留更新计数,则不用当前所接收的数据内容改写相关复制存储器位置并且不用当前所接收的更新计数改写当前驻留更新计数;和与所述比较装置连接的竞争指示装置,用于在所比较的更新计数相同的情况下指示竞争情形。计数比较装置优选是比较器。
根据本发明的另一方面,公开了一种用于在多计算机系统中配合至少一个其它计算机的单个计算机,其中所述多计算机系统包括多个计算机,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有在每个所述本地存储器中复制至少一个存储器位置的独立本地存储器,和一种复本存储器更新的方法,其中能够基本上同时从多个源更新具有特定位置标识符并且在至少两个计算机上复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,
(ii)针对每个复制的存储器位置存储先前发送或接收的更新的更新计数,
(iii)比较与要更新的复制存储器位置相关的当前驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数大于当前驻留更新计数,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,或
(v)如果当前所接收的更新计数小于当前驻留更新计数,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,或
(vi)如果当前所接收的更新计数等于当前驻留更新计数,则指示竞争情形。
根据本发明的其它方面,完全公开了所存储的数据、单个计算机和计算机程序产品。
根据本发明的另一方面,公开了一种解决被寻址的存储器的更新中的竞争的方法,其中能够基本上同时从多个源更新具有特定位置标识符的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示在所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新,
(ii)针对每个接收存储器位置,存储先前所接收的更新的更新计数,
(iii)比较当前驻留在接收存储器位置的更新计数和任何当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数大于当前驻留更新计数,则不针对传入信号或分组采取行动,或
(v)如果当前所接收的更新计数小于当前驻留更新计数,则针对传入 信号或分组采取行动,或
(vi)如果当前所接收的更新计数等于当前驻留更新计数,则开始竞争解决。
根据本发明的另一方面,公开了一种检测被寻址的存储器的更新中的竞争的系统,所述系统包括具有特定位置标识符的至少一个存储器位置;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新;与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数;比较装置,其比较先前存储的更新计数和任何当前所接收的更新信号或分组的更新计数;竞争指示装置,其与所述比较装置连接并且用于在所比较的更新计数相同的情况下指示竞争情形,在所述比较指示当前所接收的更新计数大于当前驻留更新计数的情况下不针对当前所接收的更新信号或分组采取行动,或在所述比较指示当前所接收的更新计数小于当前驻留更新计数的情况下针对当前所接收的更新信号或分组采取行动;和与所述竞争指示装置连接的竞争解决装置,其开始竞争解决过程。
根据本发明的另一方面,公开了一种解决多计算机系统的复本存储器更新中的竞争的方法,其中多计算机系统包括:多个计算机,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,在所述方法中能够基本上同时从多个源更新具有特定位置标识符的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的复制存储器位置的特定标识符、要用来更新所述复制存储器位置的内容、与复制存储器位置相关的更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和与复制存储器位置相关的更新源的驻留和解析值,所述解析值包括更新源的唯一值,
(ii)针对每个接收存储器位置,存储先前所接收的更新的更新计数和解析值,
(iii)比较当前驻留在接收存储器位置的更新计数和任何当前所接收的更新信号或分组的更新计数,和
(iv)如果与要更新的复制存储器位置相关的当前所接收的更新计数等于当前驻留更新计数,则不针对传入信号或分组采取行动,或
(v)如果当前所接收的更新计数小于当前驻留更新计数,则针对传入信号或分组采取行动,或
(vi)如果当前所接收的更新计数等于当前驻留更新计数,则比较与要更新的复制存储器位置相关的当前驻留解析值与当前所接收的更新信号或分组的更新解析值,和
(vii)如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或
(viii)如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
根据本发明的另一方面,公开了一种解决多计算机系统的复本存储器更新中的竞争的系统,其中多计算机系统包括多个计算机,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,所述系统包括具有特定位置标识符的至少一个存储器位置;多个源,其中每个源能够更新所述复制存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的复制存储器位置的特定标识符、要用来更新所述复制存储器位置的内容和与复制存储器位置相关的更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和与复制存储器位置相关的更新源的解析值,所述解析值包括更新源的唯一值;与每个所述复制存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数和解析值;比较装置,用于比较与要更新的复制存储器位置相关的先前所存储的更新计数和当前所接收的更新信号或分组的更新计数;竞争指示装置,其与所述比较装置连接并且用于在所比较的更新计数相同的情况下指示竞争情形;与所述竞争指示装置连接的竞争解决装置,用于开始竞争解决过程,其中所述解析过程包括:比较与要更新的复制存储器位置相关的当前驻留解析值和当前所接收的更新信号或分组的更新解析值,并且如果当 前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
根据本发明的另一方面,公开了一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和一种解决复本存储器更新中的竞争的方法,在所述方法中能够基本上同时从多个源更新具有特定位置标识符并且在至少两个计算机上被复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容、更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和更新源的解析值,所述解析值包括更新源的唯一值,
(ii)针对每个复制的存储器位置,存储先前发送或接收的更新的更新计数和解析值,
(iii)比较与要更新的复制存储器位置相关的当前驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数等于当前驻留更新计数,则比较与要更新的复制存储器位置相关的当前驻留解析值与当前所接收的更新信号或分组的更新解析值,和
(v)如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或
(vi)如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
根据本发明的另一方面,公开了一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和一种解决复本存储器更新的竞争的系统,所述系统包括:至少一个存储器位置,其具有特定位置标识符,在至少两个计算机上被复制,并且在机器修改其复本值时被更新以保持基本相似;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和更新源的解析值,所述解析值包括更新源的唯一值;与每个所述复制存储器位置相关的存储装置,其中存储先前所发送或接收的更新的更新计数和解析值;比较装置,其比较与要更新的复制存储器位置相关的当前所接收的更新计数值和当前驻留更新计数值,并且如果所比较的更新计数相同,则比较与要更新的复制存储器位置相关的当前驻留解析值和当前所接收的更新信号或分组的更新解析值,并且如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
根据本发明的另一方面,公开了一种用于与多计算机系统中至少一个其它计算机协作的单个计算机,其中所述多计算机系统包括多个计算机,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和一种解决复本存储器更新中的竞争的方法,其中能够基本上同时从多个源更新具有特定位置标识符并且在至少两个计算机上复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容、更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和更新源的解析值,所述解析值包括更新源的唯一值,
(ii)针对每个复制的存储器位置,存储先前发送或接收的更新的更新计数和解析值,
(iii)比较与要更新的复制存储器位置相关的当前驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数等于当前驻留更新计数,则比较与要更新的复制存储器位置相关的当前驻留解析值与当前所接收的更新信号或分组的更新解析值,和
(v)如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或
(vi)如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
根据本发明的另一方面,公开了一种在互连多个计算机的通信网络上广播存储器更新信号或分组的方法,其中每个所述计算机具有被寻址的存储器位置,每个被寻址的存储器位置具有特定位置标识符并且能够基本上同时从多个源被更新,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式化,所述格式化包括要更新的每个存储器位置的特定标识符、要用来更新所述每个存储器位置的内容和更新源的至少一个驻留更新计数,每个所述计数包括指示所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新,和
(ii)在每个所述应用执行计算机接收所述广播更新信号或分组之后,在每个指定存储器位置处将对应更新内容和所述更新计数存储在每个所述计算机的本地存储器中。
根据本发明的另一方面,公开了一种系统,用于在互连多个计算机的通信网络上广播被寻址的存储器的更新信号或分组,所述系统包括每个所述计算机中具有特定位置标识符的至少一个存储器位置;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的每个存储器位置的特定标识符、要用来更新所述每个存储器位置的内容和更新源的至少一个驻留更新计数,每个所述计数包括指示在所述更新源被更新的时机序列中更新消息的位置的数,所述 时机包含当前更新;和与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数。
根据本发明的另一方面,公开了一种在互连多个计算机的通信网络上广播存储器更新信号或分组的方法,其中每个计算机均执行被编写成在单个计算机上执行的应用程序的不同部分,并且均具有独立本地存储器,其中至少一个被寻址的存储器位置在每个所述本地存储器中被复制,每个存储器位置具有特定位置标识符并且能够基本上同时从多个源被更新,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的每个存储器位置的特定标识符、要用来更新所述每个存储器位置的内容和更新源的至少一个更新计数,每个所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和更新源的至少一个解析值,每个所述解析值包括更新源的唯一值。
根据本发明的另一方面,公开了一种在互连多个计算机的通信网络上广播被寻址的存储器的更新信号或分组的系统,每个所述计算机执行被编写成在单个计算机上执行的应用程序的不同部分,并且均具有独立本地存储器,其中至少一个,所述系统包括每个所述计算机中具有特定位置标识符、在每个所述本地存储器中被复制的至少一个复制存储器位置;多个源,其中每个源能够更新所述复制存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的每个复制存储器位置的特定标识符、要用来更新所述每个复制存储器位置的内容和更新源的至少一个更新计数,每个所述计数包括所述更新源被更新的时机的顺序的数,所述时机包含当前更新;和更新源的至少一个解析值,每个所述解析值包括更新源的唯一值。
根据本发明的另一方面,公开了一种在互连多个计算机的通信网络上广播存储器更新信号或分组的方法,其中每个计算机均执行被编写成在单个计算机上执行的应用程序的不同部分,并且均具有独立本地存储器,其中至少一个被寻址的存储器位置在每个所述本地存储器中被复制,每个存储器位置具有特定位置标识符并且能够基本上同时从多个源被更新,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的至少两个复制存储器位置的特定标识符、要用来更新所述每个复制存储器位置的内容和针对所有所述复制存储器位置的更新源的更新计数,所述计 数包括指示所有所述复制存储器位置被更新的时机的最高量值顺序的数,所述时机包含当前更新,和更新源的至少一个解析值,所述解析值包括更新源的唯一值。
根据本发明的另一方面,公开了一种在用于检测和/或解决被寻址的存储器的更新中的竞争的系统中进行数据整理的方法,其中能够基本上同时从多个源更新具有特定地址或标识符的存储器位置,所述方法包括步骤:
(i)使用更新信号/分组格式,其包括要更新的存储器位置的特定地址、要用来更新所述存储器位置的内容和指示更新所述存储器位置的时机的累积数目的更新计数,其中所述时机包含当前更新。
(ii)针对每个所述存储器位置,存储先前所接收的更新的更新计数。
(iii)不时地在预定条件出现时整理所存储的更新计数。
根据本发明的另一方面,公开了一种进行数据整理以允许检测和/或解决竞争的系统,在被寻址的存储器中,能够基本上同时从多个源更新均具有特定地址或标识符的存储器位置,所述系统包括:数据存储设备,其包括要更新的每个存储器位置的特定地址、针对每个所述地址的由任何所接收的更新内容改写的内容和指示每个所述存储器位置被更新的时机的累积数目的更新计数,其中所述时机包含任何当前更新;和整理装置,其连接到所述数据存储设备以不时地在预定条件出现时整理所存储的更新计数。
根据本发明的另一方面,公开了一种在检测和/或解决被寻址的存储器的更新中的竞争的多计算机系统中进行数据整理的方法,其中能够基本上同时从多个源更新具有特定地址或标识符的复制应用存储器位置/内容,每个所述计算机包括独立本地存储器并且均执行被编写成仅在单个计算机上操作的应用程序的一部分,所述方法包括步骤:
(i)使用更新信号/分组格式,其包括要更新的复制应用存储器位置/内容的特定地址、要用来更新所述存储器位置的内容和指示更新所述存储器位置的时机的累积数目的更新计数(″计数值″),其中所述时机包含当前更新。
(ii)针对每个所述存储器位置,存储先前所接收的更新的更新计数。
(iii)不时地在预定条件出现时整理或删除所存储的更新计数。
根据本发明的另一方面,公开了一种多计算机系统,每个所述计算机 包括独立本地存储器并且均执行被编写成仅在单个计算机上操作的相同应用程序的部分,和一种用于进行数据整理以允许检测和/或解决竞争的系统,在被寻址的存储器中,能够基本上同时从多个源更新均具有特定地址或标识符的复制应用存储器位置/内容,所述系统包括:数据存储设备,其包括要更新的每个复制应用存储器位置/内容的特定地址,针对每个所述地址的、由任何所接收的更新内容改写的内容,和指示更新每个所述存储器位置的时机的累积数目的更新计数(″计数值″),其中所述时机包含任何当前更新;和整理或删除装置,其连接到所述数据存储设备以不时地在出现预定条件时整理所存储的更新计数。
根据本发明的另一方面,公开了一种通过使用计数值表示更新消息序列中更新消息的位置来保证数据更新系统的正确操作的方法,所述方法包括步骤:
(i)停止更新消息的流动,和
(ii)在所述停止期间复位所述计数值。
根据本发明的另一方面,公开了一种多存储器系统,其中在至少两个物理位置的每个处的至少一个存储器位置由其上设置存储器更新消息的通信链路连接,其中计数值与每个所述发送的消息相关,以表示所述消息在发送消息序列中的位置,并且其中所述消息的发送被暂时停止以复位计数值。
根据本发明的另一方面,公开了一种保证多计算机系统中存储更新计数的有限计数器的正确操作的方法,每个所述计算机包括独立本地存储器并且均操作被编写成仅在单个计算机上操作的应用程序,以及至少一个应用存储器位置/内容,其在每个所述独立存储器中被复制并且被更新以保持基本相似,所述方法包括步骤:
(i)当所述更新计数值达到阈值时,复位或重新初始化每个所述计算机的所述更新计数值。
根据本发明的另一方面,公开了一种保证多计算机系统中存储更新计数值的有限计数器的正确操作的方法,每个所述计算机包括独立本地存储器并且均操作被编写成仅在单个计算机上操作的应用程序,以及至少一个应用存储器位置/内容,其在每个所述独立存储器中被复制并且被更新以保持基本相似,所述方法包括步骤:
(i)当相关的所述更新计数值达到阈值或预定时间间隔结束时,停止 所复制的应用存储器位置/内容的复本更新传送,
(ii)在每个所述计算机上复位或重新初始化所述更新计数值,
(iii)恢复先前停止的复本更新传输。
根据本发明的另一方面,公开了一种克服存储器系统中的存储器更新回声的方法,在所述存储器系统中至少一个存储器位置在不同存储器存储处被复制并且能够基本上同时从若干源更新,每个源发送更新消息,更新消息包含位置的地址、位置的新内容和指示更新消息序列中更新消息的位置的更新计数,将所述更新计数递增预定数以指示连续更新消息,所述方法包括步骤:
(i)确定最后针对特定存储器位置进行发送的源,和
(ii)在相同源要针对相同存储器位置进行顺序发送的情况下,将第二传送的所述更新计数递增超过所述预定数的数。
根据本发明的另一方面,公开了一种具有存储器更新回声拒绝的复制存储器系统,所述系统包括至少一个存储器位置,其在不同存储器存储处被复制并且能够基本上同时从若干源更新,其中每个源发送更新消息,所述更新消息包含所述位置的地址、所述位置的新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被增加预定数以指示连续更新消息,其中所述系统确定哪个源最后发送,并且在相同源要针对相同存储器位置进行顺序发送的情况下,将第二传送的所述更新计数递增超过所述预定数的数。
根据本发明的另一方面,公开了一种多计算机系统,每个所述计算机包括独立本地存储器并且每个所述计算机操作被编写成在单个计算机上操作的应用程序的部分,和一种克服存储器系统中的存储器更新回声的方法,在所述存储器系统中至少一个应用存储器位置在每个所述独立本地存储器中被复制和更新以保持基本相似,每个源发送更新消息,所述更新消息包含复制应用存储器位置/内容的地址或标识、复制应用存储器位置的相关新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被递增预定数以指示连续更新消息,所述方法包括步骤:
(i)确定最后针对特定存储器位置进行发送的源,和
(ii)在相同源要针对相同存储器位置进行顺序发送的情况下,将第二传送的所述更新计数递增超过所述预定数的数。
根据本发明的另一方面,公开了一种具有存储器更新回声拒绝的复制 存储器系统,所述系统包括至少一个应用存储器位置/内容,其在不同存储器存储处被复制并且能够基本上同时从若干源更新,其中每个源发送更新消息,所述更新消息包含复制应用存储器位置/内容的地址或标识、复制应用存储器位置的相关新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被增加预定数以指示连续更新消息,其中所述系统确定哪个源最后发送,并且在相同源要针对相同应用存储器位置/内容进行顺序发送的情况下,将第二传送的所述更新计数递增超过所述预定数的数。
根据本发明的另一方面,公开了一种多计算机系统,每个所述计算机包括独立本地存储器并且每个所述计算机操作被编写成在单个计算机上操作的应用程序的部分,和一种克服存储器系统中的存储器更新回声的方法,在所述存储器系统中至少一个应用存储器位置在每个所述独立本地存储器中被复制和更新以保持基本相似,每个源发送更新消息,所述更新消息包含所复制的应用存储器位置/内容的地址或标识、复制应用存储器位置的相关新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被递增预定数以指示连续更新消息,所述方法包括步骤:
(i)在接收机器上在接收到针对相同复制应用存储器位置/内容的复本存储器更新传输时禁止任何被提醒或被调度但尚未发送的复本存储器更新。
根据本发明的另一方面,公开了一种具有存储器更新回声拒绝的复制存储器系统,所述系统包括至少一个应用存储器位置/内容,其在不同存储器存储处被复制并且能够基本上同时从若干源更新,每个源发送更新消息,所述更新消息包含复制应用存储器位置/内容的地址或标识、复制应用存储器位置的相关新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被增加预定数以指示连续更新消息,其中所述系统当接收机器接收到复本存储器更新传输时,确定在所述接收机器上是否存在任何被提醒或被调度但尚未发送的针对相同复制应用存储器位置/内容的复本存储器更新,并且如果存在的话,禁止或取消接收机器的所述被提醒或被调度的复本存储器更新。根据本发明的另一方面,公开了一种多计算机系统,其中n个计算机(M1,M2...Mn)均运行被编写成仅在单个计算机上执行的单个应用程序的不同部分。通过用对被寻址的存储器位置进行的每个改变来更新所有计算机,使每个计算机的本地存储器保持基本相同。由于互连所有计算机的通信网络的传送延迟和等待时间,当两个或更多机器基本上同时更新相同 存储器位置时,竞争出现。公开了竞争检测和解决。使用指示每个存储器位置被更新的累积次数的计数值(99)。在当前所存储计数值和传入更新计数值相同的情况下指示竞争。公开了回声抑制的方法和回声拒绝的方法。尤其是公开了在连续顺序传送到相同存储器位置(D)的情况下将计数值递增二。
附图说明
现在参考附图描述本发明的优选实施例,其中:
图1A是用于操作JAVA代码并且从而构成单个JAVA虚拟机的现有技术计算机的示意图,
图1B是类似于图1A但是图解了代码的初始加载的绘图,
图1C图解了均是JAVA虚拟机的多个计算机互连以形成多计算机系统,
图2图解了至少一个其它伺服机器X作为服务器连接到的″n″个应用运行计算机,
图3-5图解了在适当的时候更新存储器位置的步骤,
图6和7图解了会出现竞争的阶段,
图8、9、10、11和12图解了实施例的能够检测竞争的阶段,
图13-18均图解了复本更新传输的不同时间曲线图,
图19图解了存储″计数值″的优选方案,
图20-22图解了复制共享存储器多计算机系统的两个方案,
图23图解了复制存储器实例的候选方案,
图24图解了第一数据格式,
图25图解了降低通信网络的带宽需求的第二实施例的数据格式,
图26图解了进一步降低通信网络的带宽需求的第三实施例的数据格式,
图27-29均图解了使用图26的数据格式的实施例的阶段,和
图30图解了具有降低的通信网络带宽需求的第四实施例的数据格式。
具体实施方式
参考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代码。
有关详细情形参见美国Sun Microsystems公司的T.Lindholm和F.Yellin的″The JAVA Virtual Machine Specification″第二版,这里通过引用合并了该文献。
本申请人通过提供附加设备来修改图1A的传统技术方案,该设备被方便地称作″分布式运行时刻″或″分布式运行时刻系统″DRT 71,并且如图1B所示。
在图1B和1C中,通过由箭头75或75A或75B指示的加载过程,与分布式运行时刻系统71协作,将应用代码50加载到JAVA虚拟机M1,M2,...,Mn。如这里所使用的,术语″分布式运行时刻″和″分布式运行时刻系统″基本上同义,并且说明性而不是限制性地,通常被理解为包含库代码和进程,其支持在特定平台上运行的以特定语言编写的软件。另外,分布式运行时刻系统也可以包含库代码和过程,其支持以特定语言编写的、在特定分布式计算环境内运行的软件。运行时刻系统通常涉及程序和操作系统之间的接口的细节,例如系统调用、程序启动和终止和存储器管理。为了说明背景,可从开放软件基金会得到传统分布式计算环境(DCE)(未提供本发明的在本发明的优选实施例中使用的分布式运行时刻或分布式运行时刻系统71的能力)。分布式计算环境(DCE)针对在机器上运行的软件执行计算机对计算机的通信形式,但是除其许多限制之外,不能实现所期望的修改或通信操作。在其功能和操作中,优选DRT 71协调多个机器 M1,M2,...Mn之间的特定通信。此外,优选分布式运行时刻71在图1C的每个JAVA虚拟机72或机器JVM#1,JVM#2,...JVM#n上由箭头75A或75B指示的JAVA应用程序50的加载过程期间进入操作。应当理解,根据这里提供的说明,尽管提供了针对JAVA语言和JAVA虚拟机的许多例子和说明使得读者可以从具体例子中受益,但对JAVA语言或JAVA虚拟机、或任何其他语言、虚拟机、机器或操作环境没有限制。
图1C以修改形式示出了均如图1B所示的JAVA虚拟机的方案。可以看出,相同应用代码50被加载到每个机器M1,M2...Mn。然而,由箭头83指示每个机器M1,M2...Mn之间的通信,并且尽管物理地经由机器硬件路由,有利地通过每个机器内的各个DRT 71/1...71/n来控制通信。因而,实际上这可以定义为DRT 71/1,...71/n通过网络或其它通信链路53相互通信,而不是机器M1,M2...Mn直接自身或彼此通信。所考虑和包含的是机器M1,M2...Mn或DRT 71/1,71/2...71/n之间的这种直接通信或这种通信的组合。优选DRT 71提供传送、协议和链路无关的通信。
一个公共应用程序或应用代码50及其可执行版本(具有可能的修改)同时或并行地在多个计算机或机器M1,M2...Mn上执行。出于仅在单个机器或计算机上操作应用程序50的意图来编写应用程序50。实质上,所修改的结构是在每个单个机器上复制相同的存储器结构和内容。
将术语公共应用程序理解为表示被编写成在单个机器上操作,并且在多个计算机或机器M1,M2...Mn中的每一个上,或可选地在多个计算机或机器M1,M2...Mn的某子集的每一个上全部或部分加载和/或执行的应用程序或应用程序代码。略微不同地讲,存在在应用程序代码50中表示的公共应用程序。这是单个拷贝或多个相同拷贝,其均被分别修改以产生应用程序或程序代码的修改拷贝或版本。接着,准备在相应机器上执行的每个拷贝或实例。在它们被修改之后,它们是公共的,也就是说它们执行相似操作并且彼此连贯地和一致地进行操作。应当理解,实现上述方案的多个计算机、机器、信息设备等等可以可选地连接到或耦合到未实现上述方案的其它计算机、机器、信息设备等等。
在每个机器上运行相同的应用程序50(例如并行合并排序,或计算流体动态应用或数据挖掘应用),但是根据需要在每个机器上修改应用程序的可执行代码,使得每个机器上的每个执行实例(拷贝或复本)协调其在特定机器上的本地操作和在其它机器上的相应实例(或拷贝或复本)的操作,使得它们以连贯、一致和协调的方式一同工作,并且形成是应用的一个全 局实例(即″元应用″)的表象。
相同或基本相同的应用代码的拷贝或复本均被加载到互操作和相连的机器或计算机中的对应一个上。由于每个机器或计算机的特性可以不同,在加载之前,或在加载过程中,或在加载过程之后(具有某些缺点),可以修改应用代码50以提供每个机器上的代码的定制或修改。只要能够保持如这里描述的针对互操作性、连贯性和一致性的其它要求,可以允许程序之间的某些不同。此后会理解,机器M1,M2...Mn中的每个机器和所有机器M1,M2...Mn具有相同或基本相同的应用代码50,通常具有可以是特定于机器的修改。
在每个机器M1,M2...Mn上的应用代码50(或其相关部分)加载之前、或加载期间、或执行前的任何时候,根据相同规则(或由于在每个修改器51/1,51/2...51/n内允许较小优化变化,基本相同的规则),通过相应修改器51修改每个应用代码50。
每个机器M1,M2...Mn使用相同(或基本相同或相似)的修改器51进行操作(在某些实施例中实现为分布式运行时刻或DRT 71,并且在其它实施例中实现为代码和数据50的附件,也能够在JAVA虚拟机自身内实现)。因而,所有机器M1,M2...Mn针对每个所需的修改具有相同(或基本相同或相似)的修改器51。例如,存储器管理和复制、初始化、完成和/或同步可能需要不同修改(尽管不是所有实施例需要所有这些修改类型)。
存在修改器51和分布式运行时刻71的可选实现。例如,如图1C中虚线所示,修改器51可以被实现成分布式运行时刻71的或之内的部件,因此DRT 71可以实现修改器51的功能和操作。可选地,对于用于在例如代码和数据50内或JAVA虚拟机自身内实现DRT 71的结构、软件、固件或其它装置,可以在其外部实现修改器51的功能和操作。在一个实施例中,修改器51和DRT 71都在单段计算机程序代码中被实现或编写成提供DRT和修改器的功能。在这种情况下,修改器功能和结构实际上被包含到DRT中。与怎样实现无关,修改器功能和结构负责修改应用代码程序的可执行代码,并且分布式运行时刻功能和结构负责实现计算机或机器之间和中间的通信。通过每个机器上的DRT的计算机程序代码内的中间协议层实现一个实施例中的通信功能。例如,DRT可以用JAVA语言实现通信堆栈,并且使用传输控制协议/网际协议(TCP/IP)以提供机器之间的通信或对话。实际怎样在结构和/或过程性单元之间,或在计算机程序代码或数据结构之间实现这些功能或操作或划分并不是关键。
然而,在图1C中图解的方案中,提供了多个单独计算机或机器M1,M2...Mn,通过通信网络53或其它通信链路连接其中的每个。每个单独计算机或机器配有相应修改器51。每个单独计算机还配有连接到通信网络的通信端口。通信网络53或路径可以是任何电子信令、数据或数字通信网络或路径,并且优选为慢速的,因而是低成本的通信路径(例如因特网上的网络连接),或任何公共网络配置,包含到本申请提出之日为止已知或可得到的通信端口(例如ETHERNET或INFINIBAND及其扩展和改进)。优选地,计算机配有连接通信网络53的已知通信端口(例如CISCOPower Connect 5224交换机)。
作为上述方案的结果,如果每个机器M1,M2,...,Mn具有10MB的内部或本地存储器能力,则如人们可能期望的,可完整用于应用代码50的总存储器不是机器(n)的数量乘以10MB。也不是所有n个机器的内部存储器能力的加性组合。相反,可以是10MB,或者大于10MB但小于n×10MB的某个数。在允许的、机器内部存储器容量不同的情况下,于是在一个机器中的内部存储器小于至少一个其它机器的内部存储器能力的情况下,当任何机器的最小存储器(或其一部分)被视作″公共″存储器(即每个机器M1...Mn上的类似相等存储器)或用于执行公共应用代码时,这种存储器的大小可以被用作机器的最大存储器容量。
然而,即使对待每个机器的内部存储器的方式可能最初表现为性能的可能约束,然而如何导致改进的操作和性能在后面会变得明白。自然地,每个机器M1,M2...Mn具有专用(即,″非公共″)内部存储器能力。机器M1,M2,...,Mn的专用内部存储器能力通常近似地相等,但是不需要如此。
原型多计算机系统的非商业操作表明并不是系统中的每个机器或计算机都利用或需要引用每个可能的存储器位置(例如具有其本地复本)。结果,只要每个机器的本地存储器足以满足该机器的操作,可以操作多计算机系统而无需每个机器的本地存储器与每个其它机器相同。也就是说,在具体机器不需要引用某个特定存储器位置(例如具有其本地复本)的情况下,那些特定存储器位置未被复制在该具体机器中是无关紧要的。
也可以有利地选择每个机器的内部存储器数来在每个机器中和在连接或耦合多个机器、计算机或信息设备M1,M2,...,Mn的集群或网络上实现期望性能水平。在描述了这些内部和公共存储器因素的情况下,根据这里提供的说明会理解,在机器之间能够公用的存储器的量不是限制。
在某些实施例中,多个单独计算机或机器的一些或所有能够被包含在 单个外壳或机架(例如由Hewlett-Packard开发公司、Intel公司、IBM公司和其它公司制造的所谓″刀片服务器″)内,或由Intel、AMD或其它厂商制造的多核或双核处理器或机器内,或在单个印制电路板上或甚至在单芯片或芯片组内实现。
当以非JAVA语言或在应用代码环境下实现时,通用平台和/或虚拟机和/或机器和/或运行时刻系统能够以该平台和/或虚拟机和/或机器和/或运行时刻系统环境的语言操作应用代码50(例如可能包含但不限于源代码语言、中间代码语言、目标代码语言、机器代码语言和任何其它代码语言的任何一或多个),并且不考虑机器制造商和机器内部细节地使用该平台和/或虚拟机和/或机器和/或运行时刻系统和/或语言体系结构。也应当理解,平台和/或运行时刻系统可以包含虚拟机和非虚拟机软件和/或固件体系结构,以及硬件和直接硬件编码的应用和实现。
对于更一般性的虚拟机或抽象机器环境,以及对于当前和未来计算机和/或计算机器和/或信息设备或处理系统,可以不使用或者不需要使用类和/或对象、结构、方法和计算机程序和计算机程序产品的计算机和/或计算机器和/或信息设备或处理系统仍然适用。不使用类和/或对象的计算机和/或计算机器的例子包含例如Intel公司及其它公司制造的x86计算机体系结构、Sun Microsystems公司及其它公司制造的SPARC计算机体系结构、国际商用机器公司及其它公司制造的Power PC计算机体系结构和苹果计算机公司及其它公司制造的个人计算机产品。
对于这些类型的计算机、计算机器、信息设备和在其上实现的虚拟机或虚拟计算环境,不使用类或对象思路的计算机、计算机器、信息设备和在其上实现的虚拟机或虚拟计算环境可以被概括为例如包含基本数据类型(例如整数数据类型、浮点数据类型、长数据类型、双精度数据类型、串数据类型、字符数据类型和布尔数据类型)、结构化数据类型(例如数组和记录)、导出类型或过程性语言或其它语言及环境的其它代码或数据结构,例如函数、指针、部件、模块、结构、引用和联合。当在需要的情况下组合应用时,这些结构和过程维护计算环境,其中计算机或计算环境的存储器位置、地址范围、对象、类、资产、资源或任何其他过程性或结构性方面在需要的情况下在多个单独机器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或其它代码修改装置负责在每个单独机器M1,M2...Mn上创建或复制允许多个机器互操作的存储器结构和内容。在一些方案中,这种复制存储器结构是相同的。而在其它方案中,这种存储器结构具有相同的部分和不相同的其它部分。在其它方案中,存储器结构仅在例如大端序(BigEndian)或小端序(Little Endian)格式或约定的格式或存储约定方面有所不同。
当在需要的情况下组合应用时,这些结构和过程维护计算环境,其中计算机或计算环境的存储器位置、地址范围、对象、类、资产、资源、或任何其他过程性或结构方面在需要的情况下在多个单独机器M1,M2...Mn上以协同的、一致的和连贯的方式被创建、维护、操作和去活或删除。
因此,术语″一(one)″、″单个(single)″和″公共(common)″应用代码或程序包含所有机器M1,M2...Mn操作或执行相同程序或代码而不是不同(和无关)程序的情况,换言之相同或基本相同的应用代码的拷贝或复本被加载到每个互操作和连接的机器或计算机。
在使用分布式软件的传统方案中,从一个机器的软件到物理上位于另一个机器上的存储器的存储器访问通过互连机器的网络来进行。然而,因为对物理上位于另一个计算机上的存储器的读和/或写存储器访问需要使用互连计算机的慢速网络,所以在这些配置中,这种存储器访问可以导致存储器读/写处理操作的较大延迟,可能有机器的中央处理单元的106-107周期的级别。最终,该延迟取决于许多因素,例如速度、带宽和/或通信网络的时延。这主要导致了现有技术方案中多个互连机器的减弱的性能。
然而,在本方案中,因为所有存储器位置(或所有存储器位置的某个子集)的当前值被存储在执行产生读取存储器的要求的处理的机器上,所以局部满足存储器位置或数据的所有读取。
类似地,因为所有存储器位置(或所有存储器位置的某个子集)的当前值被存储在执行产生写入存储器的要求的处理的机器上,所以局部满足存储器位置或数据的所有写入。
在中央处理单元的102-103周期内,通常可以满足这种本地存储器读写处理操作。因而,实际上涉及和/或写入的存储器访问的等待较少。
方案是传送、网络和通信路径无关的,并且不依赖于机器或DRT之 间的通信如何进行。甚至机器或DRT之间交换的电子邮件(email)可以满足通信要求。
原型多计算机系统的非商业操作表明并不是系统中的每个机器或计算机都利用或需要引用每个可能的存储器位置(例如具有其本地复本)。结果,只要每个机器的本地存储器足以满足该机器的操作,则可以操作多计算机系统而无需每个机器的本地存储器与每个其它机器相同。也就是说,在具体机器不需要引用某个特定存储器位置(例如具有其本地复本)的情况下,那些特定存储器位置不被复制在该具体机器中是无关紧要的。
就所述而言,从图2可以看出,存在若干机器M1,M2,...,Mn,n是大于或等于2的整数,图1的应用程序50在这些机器上基本同时运行,并且优选地存在被提供来允许执行各种内务处理功能,例如充当锁服务器的另一个机器X。具体地,另一个机器X可以是低价值机器,并且比能够具有例如处理器速度的期望属性的其它机器便宜许多。此外,另外的低价值机器(X+1)优选地可供在机器X出现故障的情况下提供冗余。在提供两个这种服务器机器X和X+1的情况下,出于简单的原因,它们优选地作为集群配置的双机来工作。必要时,基于上述方案,机器X和X+1可以作为多计算机系统工作。然而,这会导致通常不期望的复杂度。如果未提供机器X,则其例如内务处理功能的功能由一个或某些或所有其它机器提供。
图20是复制共享存储器系统的示意图。在图20中示出了总数为″n″的机器(n是大于1的整数)即机器M1,M2,...Mn中的三个机器。另外,示出了连接三个机器和也可以提供并且由虚线指示的优选(但可选)服务器机器X的通信网络53。在每个单独机器中,存在存储器N8102和CPUN8103。在每个存储器N8102中存在三个存储器位置,存储器位置A、存储器位置B和存储器位置C。在每个机器的存储器N8102中复制这三个存储器位置的每个。
复制共享存储器系统的这个方案允许为单个机器编写并且意图在单个机器上运行的单个应用程序基本上同时在多个机器上执行,每个机器具有独立本地存储器,只能由在该机器上执行的应用程序的对应部分访问,并且每个机器通过网络53互连。在标题为″Computer ArchitectureMethod of Operation for Multi-Computer Distributed Processing andCo-ordinated Memory and Asset Handling″的美国专利申请No.11/259885所对应的国际专利申请No.PCT/AU2005/001641(WO 2006/110,937)(代理 所卷号:5027F-D1-WO)和以本申请人的名义的PCT/AU2006/000532(WO2006/110,957)(代理所卷号:5027F-D2-WO)中,公开了检测对复制存储器位置的修改或操作的技术,例如由机器M1写入到复制存储器位置A并且相应地把由机器M1写入的这个转变值传送到均具有存储器位置A的本地复本的其它机器M2...Mn上。通过优选实施例实现这个结果,其中在要运行的应用程序的可执行目标代码中检测写入到例如存储器位置A的复制存储器位置的写指令,并且在对应于每个这种检测的写操作处修改应用程序的可执行目标代码,使得新指令被插入以另外记录、标记、加标签,或由某些这种其它记录装置指示所写入的存储器位置的值已经改变。
图21中图解了可选方案并且其被称作部分或混合复制共享存储器(RSM)。这里在计算机或机器M1和M2上复制存储器位置A,在机器M1和Mn上复制存储器位置B,并且在机器M1,M2和Mn上复制存储器位置C。然而,仅在机器M1上提供存储器位置D和E,仅在机器M2上提供存储器位置F和G,并且仅在机器Mn上提供存储器位置Y和Z。在根据WO 2007/041762(美国专利申请No.11/583,958代理所代码5027I-US所对应的)公布的国际专利申请No.PCT/AU2006/001447中公开了这种方案。在这种部分或混合RSM系统中,由一个计算机对未在任何其它计算机上复制的存储器位置做出的改变根本不需要更新。此外,由任意一个计算机对仅在多计算机系统的某些计算机上复制的存储器位置做出的改变仅需要被传送或更新到某些计算机(并且不是所有其它计算机)。
因此,对于RSM和部分RSM,后台线程任务或进程能够在后面的阶段将所改变的值传送到也复制该写入到存储器位置的其它机器,使得经过更新和传播延迟,在复本存在的所有机器上的存储器位置写入的存储器内容基本相同。在上述现有技术中公开了各种其它可选实施例。虽然对于很少写入复制存储器位置的应用程序上述现有技术方法是足够的,便现有技术方法易于在频繁地写入复制存储器位置的那些应用程序中导致固有的低效率。
本发明的所有所述实施例和方案同样适用于复制共享存储器系统,不管是否部分复制。具体地,在根据复制共享存储器方案操作的所有机器的某个子集上复制某些存储器位置的部分复制共享存储器方案自身可以构成针对本发明的目的的复制共享存储器方案。
在图3中提供了″n″个应用运行计算机或机器M1,M2,M3...Mn,并且必要时也可以提供服务器X。由于服务器没有必要,所以在图3中用 幻像指示。所有机器M1-Mn和X(如果存在)被以某种方式,最好通过商品通信网络53互连。在每个应用运行机器上,为了这里的讨论,限制复制存储器位置的数量为2,并且分别具有#15和#16的地址/标识符(而且不需要连续)。每个复制存储器位置具有内容或值,其在某些情况下可以包含代码,但出于这里的讨论的目的会再次被认为仅仅构成具有数值的数。复本存储器位置/地址#15的内容是值(数字)107,并且复本存储器位置/地址#16的内容是值(数字)192。n个应用运行机器的每个具有两个复制存储器位置,并且每个机器中的每个复本存储器位置具有基本相同的内容或数。
现在参照图4解释在一个机器的特定复制存储器位置的内容发生变化时出现的情况。针对该说明的目的,假定机器M1在执行其部分应用程序50时进行存储器写入,其导致机器M1的复本存储器位置/地址#15的内容从值(数字)107变化到值(数字)211。接着例如基于上述说明书和/或对复制存储器位置更新的描述,通过网络53,将该变化通知(更新)给所有其它机器M2,M3...Mn。这在图4中通过从机器M1向对应复本存储器位置驻留的所有其它机器发送更新通知,发送具有改变内容的所修改复本存储器位置的标识或地址,以及发送新改变的内容来进行示意性图解。这个消息被图解为图4中的消息61。
在图5中,来自图4的机器M1的消息61经由网络53传递,并且由每个其它机器M2,M3...Mn接收,其在接收到消息61时使用改写装置或方案在对应于地址#15的本地复本存储器位置中存储所改变内容211。关于这一点,应当理解,机器M1-Mn中的实际地址可以是彼此不同的,但是每个复本存储器位置具有基本上相似的全局标识符或全局地址。优选地,在由每个机器M1-Mn维护的列表中,或在服务器机器X中记录或列制本地存储器地址和全局存储器标识符/地址。在图5中,已经成功地进行更新并且所有机器M2,M3...Mn已经被连贯地更新以应对由机器M1(和在机器M1内)产生的变化。
现在参照图13,在时间图中集中地图解了图4-5的例子。这里,机器M1在时间单元1处,使用地址#15的更新值″211″,向对应复本存储器位置驻留的机器M2,M3...Mn发送复本存储器更新N101(其对应于图4和5的复本更新61)。然而,像图13中指示的那样,传送N101未立即(即,在传送的相同时间单元1处)到达接收机器M2-Mn。相反,通过指示每个机器M2-Mn的箭头指示每个接收机器在时间单元5处接收复本更新传 送N101。
因而,图13图解了由于用于在多计算机系统的多个计算机之间互连和发送复本存储器更新的通信网络的时延和延迟,所以通常在复本存储器更新的传送和接收之间产生的时间延迟。这个延迟的时段N110表示机器M1发送复本更新传送N101和机器M2-Mn接收相同的复本更新传送N101之间的″传送时延/延迟″。
在时间单元1处的传送N101之后,在时间单元5处机器M2,M3...Mn均独立地接收传送N101,并且使用所接收的传送N101的更新复本值″211″更新其本地对应的地址#15的复本存储器位置。
因而,在一次只有单个机器使用改变的值或内容更新其它机器的复本存储器地址/位置的环境下,在所有机器M1,M2,M3...Mn上的复制存储器位置的值之间未出现(或未将出现)冲突或不一致。
例如,考虑图14。图14继续图13,其中在时间单元7处,并且在接收传送N101之后,机器M3使用地址#15的更新值″999″向机器M1,M2,M4...Mn发送复本存储器更新N102。由于指示所有机器M2-Mn在传送N102之前已经接收传送N101,在传送N101和N102之间没有潜在不一致或冲突出现。因而,在一次只有单个机器更新一个复制存储器位置的情况下,保持复制存储器位置的连贯和一致的更新。
然而,单个复本存储器位置/地址,比方说地址#15,的内容可以被两个机器比方说M1和M3同时或基本同时修改(写入)。这里使用的术语″基本同时″被用于表示同时或并行发生的事件,或几乎同时或几乎并行的事件。在此后要描述的例子中,由机器M1写入的复本存储器位置/地址#15的新内容是值/数字404,并且机器M3的复本存储器位置/地址#15的新内容是值/数字92。作为执行应用程序50的不同部分的结果,修改相同复本存储器位置/地址#15的两个机器M1和M3基本同时/并行地分别通过网络53向所有其它机器发送更新通知81和82。这些更新通知旨在以图6中指示的方式更新所有其它机器的对应复本存储器位置。
在图7中,刚把复本存储器位置/地址#15处的内容改变为值/数字404的机器M1现在从机器M3接收更新消息82,因此基于图5的复本更新方法将其复本存储器位置/地址#15的值/内容更新成值/数字92。类似地,刚把复本存储器位置/地址#15处的内容更新为值/数字92的机器M3接着从机器M1接收更新消息81,并且因而将其复本存储器位置/地址#15的 值/内容更新成值/数字404。
然而,每个其它机器M2,M4,M5...Mn接收消息81和82(按任意顺序和可能不相同的顺序,取决于网络53的速度和时延)。因而,在复本存储器位置/地址#15处出现的这些机器的值/内容将根据最后接收的是消息81还是消息82来确定值/数字404或92。
显然,上面关于图7描述的环境的结果是多个机器M1-Mn的对应复本存储器位置/地址的存储器数值/内容不再一致。机器M1和M3将会交换通过接收每个其它机器的改变的每个其它更新通知所导致的值,同时剩余机器均独立地具有两个消息发出机器(在该例子中的M1和M3)的一个或另一个的值。因而,在同时或几乎同时提交更新消息的情况下,不能保证所有机器M1,M2...Mn上的复制存储器位置将以连贯和一致的方式更新,并且因此不能保证所有机器对相同复制存储器位置具有一致内容或值。因此,多个机器的一致更新复制存储器位置的期望特性,和多个机器的一致复制存储器位置的期望状态未被实现和/或未保证将被实现。
应当理解,由于时延/延迟和/或网络传输的顺序导致的定时差异,所以这种竞争/不一致出现。图15图解了网络传输的这种时延/延迟如何导致图6-7的″竞争/不一致″情况。
因而,在图15中,图6-7的例子集中地在时间图中图解。这里,机器M1使用地址#15的更新值″404″将复本存储器更新N301(对应于图6和7的复本更新81)发送到驻留对应复本存储器位置的机器M2,M3...Mn。并且,机器M3也基本上同时/并行地使用地址#15的更新值″92″将复本存储器更新N302(对应于图6和7的复本更新82)发送到驻留对应复本存储器位置的机器M1,M2,M4...Mn。
然而,像图15中指示的那样,传送N301和N302未立即(即,在相同传送时间单元1)到达接收机器。相反,通过示出每个机器M1-Mn的箭头指示每个接收机器在时间单元5处接收复本更新传送N301和N302。
由于经由互连多个计算机的网络53的网络通信的时延和延迟,造成图6-7的多个复本更新传送之间的这种竞争/冲突问题出现。具体地,在复本更新传送的传送和接收之间存在时延/延迟(例如图15的N310),这种延迟表示第一个发送机器(例如机器M1)尝试针对特定复制存储器位置的复本更新传送的″盲点″,这样,第一个机器在传送的时间(例如时间单元1)不能知道第二个(或更多)机器(例如机器M3)是否已经发送针对相同特定 复制存储器位置(例如在时间单元1之前发送的)的仍要接收的复本更新传送,或当前发送针对相同特定复制存储器位置的复本更新传送(例如时间单元1处的传送N302),或将在接收第一个机器针对相同特定复制存储器位置(例如时间单元2-4发送的)传送的复本更新传送之前发送。这种″盲点″(或″竞争窗口″)如图15的阴影区N310所示。
因此,在这种″盲点″(或″竞争窗口″)期间发送的针对相同复制存储器位置的两个或更多复本更新传送可能或将处于彼此″冲突″的风险中,因而在不被发现的情况下可能导致多个机器的这种复制存储器位置的不一致更新。
因而,图15图解了图6-7的两个机器M1和M3均在基本同时的时间发送针对相同复制存储器位置(地址#15)的复本存储器更新的情况,其中每个发送机器未在传送前知道另一个机器也发送针对相同复制存储器位置的复本存储器更新。
由于用于在多计算机系统的多个计算机之间互连和发送复本存储器更新的通信网络的时延和延迟造成在每个机器的复本存储器更新的传送和接收之间产生的时间延迟N310表示″盲点″(或″竞争窗口″),其中不能知道或检测到其它机器的可能传送,直到后面某时间(例如接收这种其它可能传送后,例如时间单元5,在″盲点″N310指示结束时)。这个延迟时段N310表示在机器M1和M3发送复本更新传送N301和N302和接收机器接收每个复本更新传送N101之间的″传送时延/延迟″。
因此,为了克服图6-7的不一致复本更新的风险,有必要设想例如在图15的″盲点″(或″竞争窗口″)N310期间,检测正在(或已经)基本同时/并行发送的针对相同复制存储器位置/地址#15的多个传送的方法,例如,检测针对相同复制存储器位置的、均在接收每个其它机器的传送之前(或在接收一或多个其它机器的所有传送之前)发送的两个或更多复本更新传送(由两个或更多机器发送的)。
这种冲突/不一致问题的多数解决方案依赖时间标签或同步时钟信号(或其它同步手段),其对涉及的所有机器/计算机(实体)是公共的。然而,在本发明的优选实施例所出现的多计算机环境中,不存在对所有计算机公共的同步信号(每个计算机是独立的)。类似地,尽管每个计算机具有其自身内部时间保持机构或时钟,但这些不同步(并且由于每个时钟可以以略微不同的速率或速度运行,所以甚至不会可靠地保持同步,可能导致多个机器之间不期望的时钟偏移和/或时钟漂移)。因而,基于多个机器之间的 时间或尝试同步的解决方案必然复杂和/或低效和/或不能成功或将/可能导致不期望/不令人满意的开销。相反,优选实施例使用顺序的概念而不是时间。
在设想一种装置或方法以克服上述不期望的特性时,在附加通信开销(例如附加传送以便检测冲突更新的可能,或在第一位置避免出现这种冲突更新)方面,或在发送和/或接收机器的附加或延迟处理(例如接收机器附加或延迟处理一或多个所接收的传送,或发送机器附加或延迟处理一或多个要发送的传送)方面,期望这种解决方案不对多计算机系统的操作带来显著开销。
例如,对于不同接收机器上相同多个传送,期望允许接收机器按任意顺序(包含不同于发送这种传送/分组的顺序的顺序)和可能不同的顺序接收分组/传送并针对其采取行动。这是期望的,因为按指定/固定顺序处理所接收的传送/对其采取行动的需求在所接收的传送的处理中带来额外的不期望的开销和延迟,例如后面发送但较早接收的传送的延迟处理/采取行动,直到较早发送但后面接收(或仍待接收)的传送的接收和处理/采取行动。
具体地,解决上述问题的现有技术方法的一个例子是使每个接收机器将所接收的复本更新传送存储在临时缓冲区存储器中以延迟对这种所接收的复本更新传送采取行动。具体地,将这种接收的更新传送在这种临时缓冲区存储器中存储一段时间(例如一秒),其中接收机器等待可能地要接收的一或多个冲突复本更新传送。如果在这个时间段内未接收这种冲突复本更新传送,则临时缓冲区存储器中存储的所接收的传送可以被采取行动(其中这种运行导致接收机器的复本存储器位置的更新)。可选地,如果接收一或多个冲突复本更新传送,则通知已经接收冲突复本更新传送。然而,由于这种现有技术方法导致附加延迟(即,在临时缓冲区存储器中存储所接收的传送并且在一个时间段内不处理它们/对其采取行动),这种现有技术方法是不期望的。
基于本发明第一实施例,通过引入与每个复制存储器位置(或可选地一组相关的复制存储器位置的两个或更多复制存储器位置)相关的″计数值″(或逻辑顺序值)和″解析值″(或每个节点值)来解决(不带双关意思)这个问题。图8中示意性图解了所修改的位置,其中每个复制存储器位置/地址#15和#16配有″计数值″和″解析值″。在图8中图解的具体实例中,复制存储器位置/地址#15的内容是107,其″计数值″是7,并且其″解析 值″是″2″,复制存储器位置/地址#16的内容是192,并且其″计数值″是84,并且其″解析值″是″5″。
在图9中,机器M1的操作使地址#15的内容从107改变到211。在这个写操作之后,例如当传送消息73A(或有时在传送消息73A之前)时,与地址#15相关的″计数值″从7递增到8,并且″解析值″被改写成值″1″(对应于机器M1的标识)。″计数值″的递增指示消息73A是机器M1在传送消息73A时已知的地址#15的更新消息序列中的下一个逻辑更新消息,并且设置″解析值″为″1″指示消息73A已经由机器M1发送。接着,机器M1通过网络53向所有其它应用运行机器M2,M3...Mn发送消息73以命令它们更新其对应的复本存储器位置/地址#15的内容。
更具体地,图8-12的″解析值″是发送更新复本值的机器的数字(整数)标识符。所以例如,在图9的情况下,复本更新传送73A的″解析值″是作为机器M1的数字标识符的值″1″。然而,数字或内容值的任何其他方案可以被用作″解析值″。具体地,数字值(或其它内容值)的任意方案可以被用作″解析值″,只要复本存储器更新的发送机器使用的解析值对于发送机器是唯一的,并且没有任何其它机器的其它复本存储器更新传送可以使用相同″解析值″。
另外,本发明不要求与单个发送机器相关的复本存储器更新全部携带相同″解析值″,或只有单个″解析值″与发送机器相关。相反,任意数目的慎重″解析值″可以被用于发送机器并且与复本存储器更新传送相关,只要这种所使用的″解析值″对发送机器是唯一的并且没有任何其他机器的其它复本存储器更新传送使用相同″解析值″。
如图10所示,其中所有其它机器M2,M3...Mn接收单个消息73A,使得所有这些接收机器的地址#15通过新内容211,新″计数值″8和新″解析值″″1″更新。因而,图10指示由所有其它机器M2...Mn接收消息73A,并且基于本发明的方法,对这个所接收的消息73A的″采取行动″导致更新″计数值″为″8″,和机器M2...Mn的复本存储器位置的更新″解析值″为″1″。现在解释每个复本存储器位置/地址#15的″计数值″和″解析值″如何确切地变化或改写以指示内容发生的变化。
具体地,当接收包括复制存储器位置的标识符、标识的复制存储器位置的相关更新值、相关竞争值(即,″计数值″或″逻辑顺序值″)和相关″解析值″的消息73A时,这个相关竞争值和″解析值″可以被用于辅助检测和解决在由两个或更多机器发送的针对相同复制存储器位置的两个或更多 更新消息之间可能出现的可能更新冲突或不一致。
基于本发明的方法,″计数值″和″解析值″的使用允许由多个机器的每个接收机器独立地检测和解决针对相同复制存储器位置由两个或更多机器发送的冲突或不一致更新的状态。具体地,″计数值″和″解析值″与复制存储器位置的相关使得在涉及相同复制存储器位置的两个或更多更新传送由两个或更多机器发送而每个发送机器不知在其传送前另一个机器类似地尝试更新相同复制存储器位置时检测成为可能,并且决定两个或更多复本存储器更新传送的哪个将成功(即,两个或更多复本更新传送的哪一个将变成所影响的复制存储器位置的最终更新值)。换言之,″计数值″和″解析值″与复制存储器位置的关联使得在涉及相同复制存储器位置的两个或更多机器的两个或更多更新被发送而不知道由一或多个其它机器的某些或所有所发送的一或多个其它更新传送时检测成为可能,并且决定哪一个或两个或更多复本存储器更新传送将成功。
由于网络通信经由网络53的时延和延迟,所以这个问题出现,其中在复本更新传送的传送和接收之间存在时延/延迟,并且因此这个延迟可以被描述为发送机器的″盲点″:尝试针对特定复制存储器位置的复本更新传送的第一个机器在传送时不知道第二个(或更多)机器是否也尝试在基本相同的时间进行针对相同指定复制存储器位置的复本更新传送。图13-18图解了这个″盲点″(或可能″竞争窗口″)。
因而,通过使用涉及复制存储器位置的″计数值″和″解析值″,其中这个″计数值″由发送机器指示复制存储器位置的近似已知的更新计数,并且其中这个″解析值″是涉及发送机器的唯一值,由两个或更多机器发送的针对相同复制存储器位置的、均基本同时/并行发送的两个或更多更新传送的出现能够被检测和解决,并且因而在该多个传送中出现的可能不一致和/或冲突可以被避免并且由所有机器以一致方式更新复制存储器位置。
现在描述在传送复本存储器更新(包括这些″计数值″和″解析值″)以实现这个结果期间如何确切使用″计数值″和″解析值″。首先,当在第一个机器(例如机器M1)的应用程序操作期间更新复制存储器位置(例如存储器位置″A″),例如写入或修改之后,这个写入复制存储器位置的更新值被通知或排队以更新到多个机器的一或多个其它机器的其它对应复本存储器位置,使得这些对应复本存储器位置经过更新和传送延迟后将保持基本相似。
在这个复制存储器位置″A″被写入之后的某时,优选在对应复本更 新传送发生之前,更新涉及写入复制存储器位置的本地/驻留″计数值″和″解析值″(即,与复制存储器位置″A″相关的机器M1上的″计数值″和″解析值″的本地复本)。具体地,这个本地/驻留″计数值″的更新优选包括所递增的本地/驻留″计数值″,并且因此存储该递增值以改写以前的本地/驻留″计数值″(即,递增本地/驻留″计数值″,并且接着用所递增的″计数值″改写)。本地/驻留″解析值″的这种更新优选包括用只与机器M1相关的唯一值(例如机器M1的唯一整数/数字标识,或只与机器M1相关并且不与其它机器相关的某些其它唯一值)改写的本地/驻留″解析值″。
在与更新″计数值″和″解析值″的时间基本相同的时间,或在稍后的时间,为网络53准备更新传送。这种更新传送优选包括四个″内容″或″有效负载″或″值″,即第一个内容/负载/值,其识别写入复制存储器位置(例如,复制存储器位置″A″),第二个内容/负载/值,其包括写入复制存储器位置的更新(变化)值(即,写入复制存储器位置的当前数值),第三个内容/负载/值,其包括与写入复制存储器位置相关的更新(例如递增)″计数值″,和最后第四个内容/负载/值,其包括与写入复制存储器位置相关的更新″解析值″。
优选地,单个复本更新传送包括在单个消息、分组、单元、帧或传送中的所有四个″内容″、″有效负载″或″值″,然而这不是必要的,并且相反可以在例如不同传送中的每个″内容″、″有效负载″或″值″的两个、三个或更多不同消息、分组、单元、帧或传送中发送四个″内容″/″有效负载″/″值″中的每个。可选地,可以在单个第一传送中发送两个″内容″/″有效负载″/″值″,和在第二传送中发送第三和第四个剩余″内容″/″有效负载″/″值″。此外可选地,四个″内容″/″有效负载″/″值″的其它组合或可选的多传送和/或配对/耦合方案为计算领域的技术人员所知,并且包含在本发明的范围内。
重要的是,特定复制存储器位置的″计数值″和″解析值″在复制存储器位置的每次复本更新传送下仅被更新一次,并且不是在由本地机器的应用程序写入特定复制存储器位置的每个时机进行。重申地,仅在复本更新传送时更新″计数值″和″解析值″,并且不是在由本地机器的应用程序对相关复制存储器位置进行写操作的每个时机进行。因此,不管本地机器的应用程序在复本更新传送之前写入复制存储器位置多少次,每次复本更新传送仅更新″计数值″和″解析值″一次。例如,由本地机器的应用程序(例如由写入相同复制存储器位置5次的执行循环的应用程序)将复制存储器 位置写入5次,但是仅发送最后写入值的单个复本更新传送(即,第5和最后的写操作的值),于是与写入复制存储器位置相关的″计数值″和″解析值″对应于单个复本更新传送地被更新一次。
现在描述在接收包括″计数值″和″解析值″的复本更新传送期间如何确切使用″计数值″和″解析值″。在接收包括相关″计数值″和″解析值″的复本更新传送时,在对应复本存储器位置驻留的复制共享存储器方案的多个机器的每个接收机器上进行下列步骤。重要的是,下列步骤可以独立地和自主地由每个机器操作(即,优选地由每个接收机器独立地和自主地操作),使得两个或更多机器之间不需要或不会进行再传送、冲突请求,或任何其它″解决″或″校正″或″检测″传送,以便检测可能冲突传送并且解决这种针对单个胜出(prevailing)传送(因此单个主要复本更新值)的多冲突传送。因此,由于对于接收包括″计数值″和″解析值″的复本存储器更新和对其采取行动并且检测和解决″冲突″/″竞争″传送,每个接收机器能够相对每个其它机器独立地和自主地操作,这特别有利。
首先,由机器(例如,机器M2)接收包括要更新的复制存储器位置的标识、用于更新其它机器的对应复本存储器位置的所改变的值和相关的″计数值″和″解析值″的复本更新传送。在使用所接收的改变值更新本地对应复本存储器位置之前,执行下列步骤以便保证复本存储器位置的一致和″不冲突″更新,并且检测和解决可能″冲突″/″竞争″更新。
首先,将所接收的相关″计数值″与对应于所接收的复本更新传送所涉及的复本存储器位置的本地/驻留″计数值″相比较。如果所接收的更新传送的所接收″计数值″大于本地/驻留″计数值″,则所接收的复本更新传送的改变值被认为是比本地对应复本存储器位置的本地/驻留值″更新的″值(即,更近的值)。因此,期望使用所接收改变值更新本地对应复本存储器位置。因而,在使用所接收值更新(改写)本地对应复本存储器位置时,也使用所接收″计数值″更新(改写)相关本地″计数值″,并且也使用所接收的″解析值″更新(改写)相关本地″解析值″。像这样的第一种情况是复本存储器更新传送的最常见情况,并且表示″不冲突″/″不竞争″(或尚未竞争/未冲突)复本更新传送。
另一方面,如果所接收的更新传送的所接收″计数值″小于本地/驻留″计数值″,则所接收的改变值被认为是比本地对应复本存储器位置的本地/驻留值″更旧的″值。因此,不期望使用所接收的改变值(当该值是″陈旧″值时)更新本地对应复本存储器位置,并且结果忽视或丢弃所接收的改变 值。
然而,第三状态也有可能,即,所接收的传送的所接收的″计数值″等于(相同于)本地/驻留″计数值″。当像这样的情况发生时,所接收的复本更新传送的所接收改变值可以既不保证″更新″,也不比本地对应复本存储器位置的本地/驻留值″更旧″。因此,当像这样的情况发生时(即,所接收的复本更新传送的″计数值″与本地对应复本存储器位置的本地/驻留″计数值″相同),则具有本地对应复本存储器位置的所接收的复本更新传送被认为是″冲突中″(或″竞争″)。
所接收的复本存储器更新和本地对应复本存储器位置之间的这种可能″冲突″通常在两个或更多机器在基本相同时间(即,基本同时/并行)发送针对相同复制存储器位置的复本存储器更新时发生。这种两个或更多传送由于彼此冲突而被称作″竞争中″,并且如果未检测到″竞争中″(即,冲突中),则存在所影响的复制存储器位置的多个对应复本存储器位置(即,竞争/冲突更新传送涉及到的复制存储器位置)不会以连贯和一致方式被多个机器更新的风险。在图6-7和15中图解了由两个或更多机器基本上同时/并行对相同复制存储器位置进行更新的这种例子,其产生多个机器的复本存储器位置的不一致更新。
例如,在针对相同复制存储器位置的两个复本更新传送基本同时/并行出现(发送)时(即,由两个机器发送,其中每个发送机器在发送其自身传送之前未接收其它发送机器的传送),并且每个发送具有相同相关″计数值″,则通过使用上述方法每个接收机器可以独立于任何其他机器(即没有辅助)地独立检测这种″冲突″传送,并且不需要通过接收或者发送机器的任何附加传送。此外,不管传送到达接收机器的顺序如何(并且对于不同接收机器可能有不同顺序),每个接收机器能够检测这种″冲突″传送。
另外,上述方法也利于每个发送机器检测冲突传送。即,针对多个冲突发送机器的每个,这种发送机器的每一个能够类似独立地在接收每个这种更新时检测每个其它发送机器的冲突复本存储器更新,并且无需接收或发送机器的任何额外传送。
因而,当所接收的复本更新传送和本地/驻留复本值″冲突中″时,涉及每个复制存储器位置(和复本存储器更新传送)的″计数值″可以被用于检测。在所接收的复本更新传送的″计数值″与本地对应复本存储器位置的本地/驻留″计数值″相同的这种情况下,伴随所接收的传送的″解析值″可以被用于解决所检测的″冲突″并且确定所接收的″冲突″复本更新传送是 否将被丢弃或可选地更新本地对应复本存储器位置。现在解释如何用″解析值″解决所接收的复本更新传送和本地对应复本值之间所检测的″冲突″。
伴随每个复本更新传送的″解析值″可以被用于解决所接收的复本存储器更新传送和对应复本存储器位置的本地/驻留值之间所检测的冲突(例如可以通过等于对应复本存储器位置的本地/驻留″计数值″的所接收的复本存储器更新传送的″计数值″来检测)。当针对所接收的复本存储器更新传送检测这种″竞争″/″冲突″状况时,可以检查和比较所接收的复本存储器更新传送的伴随″解析值″和对应本地/驻留″解析值″,以便确定两个复本值(即,本地/驻留复本值或所接收的更新复本值)中的哪个会″胜出″。因而,伴随每个复制存储器位置和每个复本更新传送的″解析值″的目的是提供一种手段,以确定两个这种复本值中的哪个会胜出,因此,确定所接收的冲突复本更新传送是否被更新到本地存储器。
具体地,″解析值″的使用和伴随比较规则可以被用于比较两个″解析值″,以便一致地选择两个值中的单个作为″胜出″值。如果基于所接收的冲突复本更新传送的″解析值″是胜出值(与本地/驻留对应″解析值″相比较)的这种规则进行确定,则接收机器可以进行使用具有″胜出″传送的所接收复本更新值来更新本地对应复本存储器位置(包含用所接收的″计数值″和″解析值″改写对应本地/驻留″计数值″和″解析值″)。可选地,如果确定所接收的冲突复本更新传送的这种″解析值″不是胜出值(即,本地/驻留″解析值″是胜出值),则接收机器不用冲突传送的所接收复本更新值更新本地对应复本存储器位置,并且这种冲突传送可以被丢弃。
例如,在图8-12的情况下,解决规则可以像选择两个″解析值″中较高的作为″胜出″值那样简单。可选地,不同的所使用的解决规则可以选择两个″解析值″中较低的作为胜出值。最终,选择用作″解析值″的特定值,和选择确定″胜出″值的特定解决规则对本发明不重要,只要所选择的″解析值″对每个发送机器唯一(即,两个机器的两个传送可以不具有相同″解析值″),并且只要所选择的解决规则在两个特定″解析值″的每次比较时一致地选择相同胜出″解析值″。
基于上述方法的组合″计数值″和″解析值″利于/允许检测由机器接收的″冲突″复本更新传送,并且当接收″冲突″复本更新传送时,利于/允许由多个接收机器一致更新所影响的复制存储器位置。重要的是,当基于上述方法操作时,″计数值″和″解析值″利于由多个接收机器一致地更新复 制存储器位置,而不考虑″冲突″复本更新传送的接收顺序,并且无需任何两个或更多接收和/或发送机器之间的其它通信或交互以保证一致更新所影响的复本存储器位置。接着,针对包括″计数值″和″解析值″的复本更新传送的操作的上述方法实现了能够检测和解决竞争/冲突复本更新传送而无需一个、某些或所有发送机器再传送所影响(即,冲突)的传送的期望目标。
因而,上述方法公开了通过下述方式发送复本存储器更新的系统:不需要在传送期间用于检测和解决其它机器的可能冲突传送的考虑或允许(allowance)或特殊处理或其它特殊步骤(例如获得复制存储器位置的专门更新许可)。换言之,与复制存储器位置相关的″计数值″和″解析值″的上述使用使得能够发送″自包含的″复本存储器更新到所有接收机器,其中这种″自包含的″复本存储器更新的值/信息具有所有必要信息,以利于检测和解决在传送时发送机器未知的(相同复制存储器位置的)可能冲突传送。重要的是,包括″计数值″和″解析值″的这种″自包含的″复本存储器更新可以由发送机器发送,而不考虑一或多个其它机器的可能冲突传送,这样,″自包含的″复本更新传送(包含″计数值″和″解析值″)包含所有必要信息以利于针对相同复制存储器位置检测和解决其它机器的冲突更新。
因此,每个发送机器能够独立和无拘束地工作,并且不需要任何″传送授权″、传送许可(例如专门传送许可)、专门更新或写入许可等等,并且,由于使用上述方法能够独立于每个其它机器地检测每个接收机器上的这种可能冲突传送,每个发送机器(和每个可能同时发送的机器)可以发送不考虑其它机器的可能冲突地每当其选择时传送复本存储器更新,并且决定多个机器的单个公共胜出复本更新传送和相关的更新复本值。
因而,读者应当理解,复本更新传送(包括″计数值″和″解析值″)的上述方法实现了期望操作方案,其允许由第一发送机器传送单个复本存储器更新传送(例如单个消息、单元、帧、分组或其它发送单元),而不管这种单个传送是否最终会与一或多个其它机器的一或多个其它传送″冲突″或竞争。结果,通过使用如上所述的″计数值″和″解析值″,发送机器可以在任何时间并且针对任意复制存储器位置发送单个或多个复本存储器更新到任意一或多个其它机器,而不考虑这种复本存储器更新是否会或可能与一或多个其它机器的一或多个其它传送冲突或竞争。
此外,读者应当理解,复本更新传送(包括″计数值″和″解析值″)的上述方法实现了额外的期望的操作方案,其中两个或更多更新传送竞争/冲 突的情况不导致再传送、再尝试传送、停止传送等等。
此外,复本更新传送的上述方法实现了另一个期望的操作方案/结果,其中在两个或更多冲突复本更新传送(例如机器M1针对复制存储器位置″A″的第一个复本更新传送,和机器M2针对相同复制存储器位置″A″的冲突第二个复本更新传送)的时机,机器M1和M2针对相同复制存储器位置″A″或任何其他复制存储器位置的任一或两者的其它正在进行的复本更新传送可以以不间断和无阻的方式继续,具体地,无需使在这种″冲突″传送之后的其它/后面的复本存储器更新传送(包含复制存储器位置″A″的其它/后面的更新传送)停止、中断或延迟。
此外,复本更新传送的上述方法实现了另一个期望的操作方案/结果,其中,不管这种其它传送是否应用于/涉及复制存储器位置″A″,在两个或更多冲突复本更新传送(例如机器M1针对复制存储器位置″A″的第一个复本更新传送,和机器M2针对相同复制存储器位置″A″的冲突的第二个复本更新传送)的时机,不会影响任何其它机器(例如,机器M3...Mn)的复本存储器更新传送。因而,其它机器(例如,机器M3...Mn)的传送也能够在存在两个或更多冲突传送(例如机器M1和M2的)的情况下(例如,基本同时)以不间断、无阻和无拘束的方式继续和进行,即使机器M3...Mn的这种其它传送涉及/应用于复制存储器位置″A″。
因而,检测可能冲突或竞争的复本更新传送的上述方法解决了各种问题。
总而言之,现在解释包括发送和接收机器的多计算机系统的操作,和使用上述″计数值″和″解析值″检测和解决冲突更新。
现在参照图16,在时间图中集中地图解了图9-10的例子。这里,机器M1使用地址#15的更新值″211″,竞争值(″计数值″)″8″和″解析值″″1″,在时间单元1发送复本存储器更新N401A(其对应于图9和10的复本更新73A)到对应复本存储器位置驻留的机器M2,M3...Mn。
基于上述规则,对应于机器M1的传送N401,机器M1的更新复制存储器位置/地址#15的″计数值″由1递增到″8″(即,本地/驻留″计数值″″7″递增为新″计数值″″8″),并且″解析值″更新为″1″(即,前面的本地/驻留″解析值″被用新值″1″改写)。接着,复本存储器更新N401A被发送到机器M2-Mn,具有写入机器M1的复制存储器位置(即,复制存储器位置/地址#15)的更新值″211″,更新值对应到的复制存储器位置的标识(即, 复制存储器位置/地址#15),更新复本值对应到的复制存储器位置的相关递增″计数值″(即,新驻留″计数值″″8″),和更新复本值对应到的复制存储器位置的相关更新″解析值″(即,新驻留″解析值″″1″)的形式。
重要的是,针对″解析值″的更新整数/数字值的特定选择对本发明不重要,只要所选择的数字/整数值是发送机器的唯一值,并且对其没有任何其它机器发送的其它复本更新传送可以具有相同″解析值″。在图8-12的例子中,每个更新的″解析值″选择的数字值是发送机器的整数/数字标识符(例如,对应于复本更新73A由机器M1发送的数字值″1″)。例如,针对复制存储器位置/地址#16,由机器M5发送的复本更新传送也是如此,于是这种复本更新传送的相关″解析值″是对应于作为这种复本更新传送的发送机器的机器M5的数字标识的值″5″。可以使用各值的任何其它方案作为复本更新传送和复制存储器位置的″解析值″,只要每个″解析值″对每个发送机器是唯一的,并且没有来自两个机器的两个复本更新传送可以包含相同″解析值″。
然而,像图16中指示的那样,传送N401A未立即(即,在传送的相同时间单元1)到达接收机器。相反,通过示出每个机器M2-Mn的箭头指示每个接收机器在时间单元5处接收复本更新传送N401A。因而,图16图解了由于用于在多计算机系统的多个计算机之间互连和发送复本存储器更新的通信网络的时延和延迟而通常在复本存储器更新的传送和接收之间产生的时间延迟N410A。这个延迟时段N401A表示机器M1发送或复本更新传送N401A和机器M2-Mn接收相同复本更新传送N401A之间的″传送时延/延迟″。
机器M1的传送N401A之后,接收机器M2-Mn均独立地接收传送N401A,并且基于上述规则独立地对所接收的传送″采取行动″。具体地,通过将所接收的传送N401A的″计数值″与每个接收机器(针对所有机器指示为″7″)的对应复本存储器位置的驻留(本地)″计数值″相比较,能够确定传送N401A的所接收″计数值″(即,计数值″8″)大于每个机器的对应复本存储器位置的驻留″计数值″(即,驻留计数值″7″)。
结果,做出这样的确定:传送N401A的所接收更新值是比机器M2-Mn的驻留值更新的值,因此允许接收机器M2-Mn用所接收的更新复本值更新其本地对应复本存储器位置。因此接着,每个接收机器M2-Mn用传送N401A的所接收的″计数值″替换本地对应复本存储器位置的驻留(本地)″计数值″(即,用所接收的″计数值″″8″改写驻留″计数值″″7″),以及用传 送N401A的所接收的″解析值″替换本地对应复本存储器位置的驻留(本地)″解析值″(即,用所接收的″解析值″″1″改写驻留″解析值″″2″),并且用所接收的更新复本存储器位置值更新本地对应复本存储器位置(即,用所接收的值″211″改写前面值″107″)。
因而,所描述的″计数值″的使用允许在接收机器M2-Mn处做出确定:机器M1发送的复本更新N401A比每个接收机器的本地驻留值更新。因此,机器M2-Mn能够使用传送N401A的更新复本值成功地以连贯和一致的方式被更新,并且因而实现了复制存储器位置的连贯和一致更新。
例如,考虑图17。图17继续图16,其中在时间单元7处,并且在接收传送N401A之后,机器M3传送复本存储器更新N402A,和地址#15的更新值″999″,更新″计数值″″9″和″解析值″″3″到机器M1,M2,M4...Mn。具体地,机器M3到机器M1,M2,M4...Mn的其它传送N402A是针对由传送N401A更新的相同复制存储器位置(即,复制存储器位置/地址#15),通过操作机器M3产生的更新复本值的传送。
对应于机器M3的传送N402A,根据上述规则,更新复制存储器位置/地址#15的机器M3的″计数值″递增1变成″9″(即,驻留″计数值″″8″递增变成新″计数值″″9″),并且″解析值″被更新为值″3″(对应于机器M3的数字标识)。接着,复本存储器更新N402A被传送到机器M1,M2,M4...Mn,其包括机器M3的写入复制存储器位置(即,复制存储器位置/地址#15)的更新值″999″,更新值对应到的复制存储器位置的标识(即,复制存储器位置/地址#15),更新值对应到的复制存储器位置的相关递增″计数值″(即,新驻留″计数值″″9″),和相关″解析值″″3″(作为对应于机器M3的唯一数字标识)。
接着,在时间单元11指示机器M1,M2,M4...Mn接收传送N402A,并且根据上述规则以类似于机器M2-Mn对接收的传送N401A采取行动的方式独立地对所接收传送″采取行动″。具体地,通过比较所接收的传送N402A和每个接收机器的对应复本存储器位置的驻留(本地)″计数值″(对所有机器指示为″8″),能够确定所接收的传送N402A的″计数值″(即,计数值″9″)大于每个机器的对应复本存储器位置的驻留″计数值″(即,驻留计数值″8″)。
结果,确定所接收的传送N402A的更新值是比机器M1,M2,M4-Mn的驻留值更新的值,因此允许机器M1,M2,M4-Mn用所接收的更新复本值更新其本地对应复本存储器位置。因此,接着,每个接收机器 M1,M2,M4-Mn用所接收的传送N402A的″计数值″替换本地对应复本存储器位置的驻留(本地)″计数值″(即,用所接收的″计数值″″9″改写驻留″计数值″″8″),用所接收的传送N402A的″解析值″替换本地对应复本存储器位置的驻留(本地)″解析值″(即,用所接收的″解析值″″3″改写驻留″解析值″″1″),和用所接收的更新复本存储器位置值更新本地对应复本存储器位置(即,用所接收的值″999″改写前一值″211″)。
因而,如所描述的那样使用″计数值″,允许在接收机器M1,M2,M4...Mn处确定机器M3的所发送复本更新N402A比每个接收机器的本地驻留值新。因此,机器M1,M2,M4...Mn能够成功地以连贯和一致的方式用传送N402A的更新复本值更新,并且获得复制存储器位置的一致更新。
作为评论,通过使用每个复本存储器位置(或一组复本存储器位置)的相关″计数值″实现的是,这种″计数值″可以被用于通知复本更新比已驻留在接收机器上的复本存储器位置值更新或更旧(或既不新又不旧)。参见图16和17,机器M1的第一传送N401A具有计数值″8″,其随后被机器M2-Mn接收。在机器M3接收传送N401A之后的某时(例如时间单元7),机器M3发送针对传送N401A的相同复制存储器位置的新值的复本更新(即,复制存储器位置/地址#15),并且因此新″计数值″″9″与这种传送N402A相关,其指示这种传送N402A比传送N401A(其具有″计数值″″8″)更″新″(或更″迟″)。
结果,通过使用上述方法,能够保证例如当在机器(例如机器M2)接收传送N402A之后由相同机器(例如机器M2)接收传送N401A的情况下,″迟″接收的传送N401A不会导致机器M2(其中存储先前接收的传送N402A的值)的复本存储器位置值被传送N401A的较″旧″(或″较早″)值改写。这是由于,根据″计数值″的上述操作,针对复制存储器位置/地址#15的机器M2的驻留″计数值″在接收传送N402A之后被改写成″9″。因此,当在接收传送N402A和对其采取行动之后接收具有″计数值″″8″的传送N401A时,根据上述″计数值″规则,由于传送N401A的″计数值″小于因为前面接收传送N402A和对其采取行动而得到的驻留″计数值″″9″,这种所接收的传送N401A不会导致机器M2的本地复本存储器位置#15被所接收的传送N401A的更新值更新。因而,获得连贯和一致的复本更新。
图11图解了在上述涉及图6的环境中的情形,其中两个(或更多)机器M1和M3同时,或基本上同时更新相同复制存储器位置/地址。像在 图10中那样,执行其部分应用程序的机器M1使复制存储器位置/地址#15的内容被写入新内容″211″。结果,与复制存储器位置/地址#15相关的″计数值″从″7″递增到″8″,用新值″1″(对应于机器M1的数字标识)改写″解析值″,并且通过网络53向所有其它机器M2,M3,...Mn发送消息73A,消息73A包括复制存储器位置/地址#15的更新值(即,″211″),写入复制存储器位置的标识(即,地址#15),相关递增″计数值″(即,″8″),和相关更新″解析值″(即″1″)。基本上同时地,执行其部分应用程序的机器M3将新内容″92″写入相同复制存储器位置/地址#15,并且结果类似地其″计数值″从″7″递增到″8″,用新值″3″(对应于机器M3的数字标识)改写其″解析值″,并且发送包含这些细节的消息74A(即,写入复制存储器位置的标识,写入复制存储器位置的更新值,相关递增″计数值″,和相关更新″解析值″)到所有其它机器M1,M2,M4,M5,...Mn。这是图11所图解的情形。
在图12中图解了图11中所图解的情形的结果。像在图7中那样,未产生任何/任意消息的机器M2,M4,M5...Mn已经接收了消息73A或74A的第一个(按任意顺序),并且根据上述方法对这种第一个接收的传送″采取行动″。具体地,不考虑是消息73A还消息74A被第一个接收,这种第一个接收的消息导致本地对应复本存储器位置的更新,这样,第一个接收的消息具有″计数值″″8″,其大于每个接收机器的驻留″计数值″″7″(即,认为第一个接收的传送比本地对应复本存储器位置的当前数值更新)。因此,在对第一个接收的消息/传送采取行动时,使驻留″计数值″从″7″改写成″8″,使驻留″解析值″改写成所接收的第一个接收的传送的更新″解析值″,并且用所接收的第一个接收的传送的更新值更新/替换(例如改写)本地对应复本存储器位置。因此,在这样操作第一个接收的传送之后,在本地存储器处存储(或改写)的、对应于复制存储器位置/地址#15的内容是211或92,这取决于第一个接收的消息73A或74A中的一个,相关本地/驻留″计数值″是″8″,并且相关本地/驻留″解析值″是″1″或″3″,这取决于第一个接收的消息73A或74A中的一个。
然而,在每个接收机器M2,M4,M5...Mn接收两个传送/消息73A和74A中的第二个,并且根据上述方法对这种第二个接收的传送″采取行动″时,在第二个接收的传送的″计数值″和对应本地/驻留″计数值″之间检测″冲突″/″竞争″的状态。具体地,在对第二个所接收消息/传送采取行动时,驻留″计数值″(具有值″8″)和第二个所接收传送的″计数值″(也具有值″8″)的比较导致确定第二个所接收传送与驻留″计数值″″冲突″/″竞争″。 因此,在接收和操作第二个接收的传送/消息时,每个接收机器M2,M4,M5...Mn能够通过检测因为对第一个接收的传送采取行动而得到的更新驻留″计数值″和第二个接收的传送的″计数值″之间的″冲突″(其中两个值是相同的),检测和通知第一个和第二个接收的传送之间的″冲突″状态。
因而,可以理解,接收消息73A和74A中的第一个消息并且从而具有更新″计数值″″8″(从操作这第一个接收的消息所得到)的机器M2,M4,M5,...Mn在其接收消息73A和74A中的第二个消息时会具有与第二个接收的消息的″计数值″相同的驻留″计数值″。因而,这些机器可以检测和通知竞争。
然而,对于机器M1和M3,其中的每个分别发送消息73A和74A,只接收单个消息(即,两个所发送的消息73A和74A中的另一个)。具体地,根据上述方法,当机器M1和M3分别传送消息73A和74A时,每个发送机器递增复制存储器位置/地址#15的本地/驻留″计数值″(例如,从值″7″递增到值″8″)并且存储所递增的计数值,以改写/替换前一驻留″计数值″,以及在消息73A和74A内(或其一部分或与之相关)分别发送递增″计数值″。因而,在机器M1和M3分别传送消息73A和74A时,每个发送机器(即,机器M1和M3)均具有分别对应于复本存储器更新消息73A和74A的传送的复制存储器位置/地址#15的本地/驻留″计数值″″8″。
因而,通过比较驻留″计数值″和所接收的消息74A的″计数值″(通过例如比较器),由于机器M1检测到传入消息74A包含与和复制存储器位置/地址#15相关的驻留″计数值″的现有状态相同的″计数值″(即,″计数值″″8″)的情形,所以机器M1能够检测和通知″冲突″/″竞争″情形出现。
类似地,机器M3在接收消息73A时也接收具有相同″计数值″的传入消息作为对应驻留″计数值″。因而,由于机器M3检测到传入消息73A包含与和复制存储器位置/地址#15相关的驻留″计数值″的现有状态相同的″计数值″(即,″计数值″″8″)的情形,所以机器M3也能够检测和通知″冲突″/″竞争″情形出现。
因而,可以理解,分别发送消息73A和74A并且从而具有递增″计数值″″8″(从传送消息73A和74A中的相应一个所得到)的两个发送机器M1和M3在其分别接收消息74A和73A时具有与所接收消息的″计数值″相同的驻留″计数值″。因而,这些机器也可以检测和通知竞争。
对应于接收机器检测的这种冲突情形,其中所接收的复本存储器更新 传送与本地/驻留复本值(和相关本地/驻留″计数值″)″竞争″(或″冲突″),所接收的冲突复本更新传送的相关″解析值″和本地复本存储器位置的本地/驻留″解析值″可以一起用以解决所接收的复本更新传送和本地驻留值之间的冲突。具体地,根据特定解决规则,这种冲突情形可以通过比较两个″解析值″(即,驻留/本地″解析值″和所接收冲突传送的″解析值″)来解决,以便选择单个″胜出″解析值,和胜出复本更新值(即,胜出″解析值″的相关/对应复本更新值)。
例如,在图8-12中,所使用的解决规则与选择两个比较″解析值″中较高一个一样简单。在图8-12的情形中,其中复本存储器更新传送的″解析值″对应于发送机器的数字标识,上述简单解决规则的结果是由最高数字标识的机器发送的复本更新传送会胜出。然而,在可选实施例中,任何其他规则或方法可以被用来从两个比较″解析值″(即,所接收的冲突复本更新传送的″解析值″和对应本地/驻留″解析值″)中选择″胜出″解析值。因而,可以可选地使用和利用与这里所描述的那些不同的任何解决规则或方法,其会在比较两个″解析值″时一致选择相同胜出值。
然后返回到图12,在每个接收机器M2,M4,M5...Mn接收两个传送73A和74A中的第二个并且根据上述方法对这种第二个接收的传送″采取行动″时,在第一个接收的传送的更新″计数值″和第二个接收的传送的″计数值″之间检测″冲突″的状态,但是通过使用相关″解析值″和上述简单解决规则,可以以一致方式获得复制存储器位置的更新。具体地,在检测第二个接收的复本更新传送和驻留/本地复本值之间的″竞争″情形(如通过使用相关″计数值″检测)时,可以根据上述简单解决规则(或任何其他可选用解决规则)比较相关″解析值″(即,所接收的冲突复本更新传送的″解析值″和本地/驻留″解析值″),以选择单个胜出复本更新值,即,本地/驻留复本更新值或所接收的冲突复本更新传送的所接收复本更新值。
例如,在机器M2接收复本更新传送74A作为第二个接收的复本更新传送(因此,复本更新传送73A作为第一个接收的复本更新传送)并且将第二个接收的传送74A检测为与驻留复本值(即,通过第一个接收的传送73A更新驻留复本值)的″竞争″/″冲突″的情况下,根据上述简单规则,通过比较本地/驻留″解析值″和所接收″解析值″,确定包括解析值″3″的所接收复本更新传送74A胜过来自前一传送73A的驻留/本地解析值″1″(因为解析值″3″大于解析值″1″)。结果,使用从复本更新传送74A接收的新复本更新值″92″更新机器M2的本地对应复本存储器位置,并且用所接收的 值″3″替换对应本地/驻留″解析值″。
可选地,在机器M2(或机器M4...Mn中的任何其他一个)接收复本更新传送73A作为第二个接收的复本更新传送(因此,复本更新传送74A作为第一个接收的复本更新传送),并且通过根据上述简单规则比较本地/驻留″解析值″和所接收的″解析值″而检测第二个接收的传送73A为与驻留复本值(即,通过第一个接收的传送74A更新驻留复本值)″竞争″/″冲突″的情况下,会确定包括解析值″1″的所接收复本更新传送73A未胜过来自前一传送74A的驻留/本地″解析值″″3″(因为解析值″1″小于解析值″3″)。结果,不会使用从复本更新传送73A接收的第二个接收的复本更新值″211″更新机器M2的本地对应复本存储器位置,并且不会用所接收的″解析值″″1″替换对应本地/驻留″解析值″。
因而,不考虑由机器M2,M4...Mn接收的冲突复本更新传送73A和74A的指令,相关″解析值″和对应解决规则的使用使复制存储器位置获得一致更新,使得在接收两个传送73A和74A时,每个接收机器M2,M4...Mn的对应复本存储器位置最终被更新以保持基本相似。
类似地,针对每个接收机器M2,M4...Mn比较″解析值″″的上述方法和规则也适用于每个发送机器M1和M3。具体地,在每个发送机器M1和M3分别接收另一个机器的传送74A和73A,并且根据上述方法对这种所接收的传送″采取行动″的时机,检测在驻留/本地″计数值″和另一个发送机器所接收的传送的″计数值″之间的″冲突″状态,但是通过使用相关″解析值″和上述简单解决规则,以一致的方式获得复制存储器位置的更新。具体地,在检测所接收的复本更新传送和驻留/本地复本值之间的″竞争″情形(如通过使用相关″计数值″检测)时,可以根据上述简单解决规则(或任何其他可选解决规则)比较相关″解析值″(即,所接收的冲突复本更新传送的″解析值″和本地/驻留″解析值″),以选择单个胜出复本更新值,即,本地/驻留复本更新值或所接收的冲突复本更新传送的所接收复本更新值。
例如,当机器M1接收机器M3的复本更新传送74A,并且通过根据上述简单规则比较本地/驻留″解析值″和所接收的″解析值″而将这种接收传送74A检测为与驻留复本值(即,传送复本更新传送73A的机器M1更新的驻留复本值)″竞争″/″冲突″时,会确定包括解析值″3″的所接收复本更新传送74A胜过驻留/本地解析值″1″(因为解析值″3″大于解析值″1″)。结果,使用从复本更新传送74A接收的新复本更新值″92″更新机器M1 的本地对应复本存储器位置,并且用所接收的值″3″替换对应本地/驻留″解析值″。
可选地,当机器M3接收机器M1的复本更新传送73A,并且通过根据上述简单规则比较本地/驻留″解析值″和所接收的″解析值″而将这种所接收的传送73A检测为与驻留复本值(即,通过机器M3传送复本更新传送74A更新的驻留复本值)″竞争″/″冲突″时,会确定包括解析值″1″的所接收复本更新传送73A不会胜过驻留/本地″解析值″″3″(因为解析值″1″小于解析值″3″)。结果,不会使用从复本更新传送73A接收的所接收的复本更新值″211″更新机器M3的本地对应复本存储器位置,并且不会用所接收的″解析值″″1″替换对应本地/驻留″解析值″。
因而,相关″解析值″和对应解决规则的使用使每个发送机器M1和M3获得复制存储器位置的一致更新,以便在分别接收两个传送74A和73A时,每个发送机器M1和M3的对应复本存储器位置最终被更新以保持基本相似。
因而,前面针对接收和发送机器两者描述的相关″解析值″和对应解决规则的使用使复制存储器位置获得一致更新。
因而,转到图18,在时间图中集中图解了图11-12的例子。这里,机器M1向对应复本存储器位置驻留的机器M2,M3...Mn发送复本存储器更新N601A(其对应于图11和12的复本更新73A),和地址#15的更新值″211″,竞争值(″计数值″)″8″,和″解析值″″1″。并且,机器M3也基本上同时/并行地向对应复本存储器位置驻留的机器M1,M2,M4...Mn发送复本存储器更新N602A(其对应于图11和12的复本更新74A),和相同地址#15的更新值″92″,竞争值(″计数值″)″8″,和″解析值″″3″。
另外,如图18中指示的那样,传送N601A和N602A未立即(即,在传送的相同时间单元1)到达接收机器。相反,通过指示每个机器M1-Mn的箭头指示每个接收机器在时间单元5处接收复本更新传送N601A和N602A。
然而,不同于图6和7的情况,传送N601A和N602A的相关″计数值″和″解析值″和每个接收机器的驻留″计数值″和″解析值″的使用能够检测和解决两个冲突/竞争的复本更新传送N601A和N602A。具体地,不考虑机器M2,M4...Mn首先接收复本更新传送N601A或N602A中的哪个,每个机器能够独立地检测与第一个接收的传送冲突/竞争的两个所接 收传送中的第二个,并且确定本地对应复本存储器值为两个冲突传送中相同胜出的传送(即,机器M3的胜出复本更新传送74A)的共同和一致的更新复本存储器值。
此外,每个发送机器M1和M3会独立地能够检测到另一个机器的所接收传送与接收机器的本地值冲突/竞争,并且确定本地对应复本存储器值为两个冲突传送中相同胜出的传送(即,机器M3的胜出复本更新传送74A)的共同和一致的更新复本存储器值。
因而,通过使用本发明的上述方法将″计数值″和解析值与复制存储器位置相关,并且通过将这里描述的规则用于操作和比较这种″计数值″和″解析值″,可以获得多个机器的复本存储器位置的一致更新,还可以获得冲突/竞争复本更新传送的检测和解析。
因而,从以上例子发现,与复制存储器位置结合/关联的″计数值″和″解析值″的规定提供了一种手段,通过该手段可以检测和解决相同复制存储器位置的多个复本更新传送之间的竞争,获得/保证复制存储器位置的一致更新。
因而,″计数值″的提供和简单规则的提供使得能够实现复制存储器位置的一致更新,所述规则为,如果驻留″计数值″小于所接收的″计数值″,则具有复制存储器位置的更新内容的传入消息有效,如果驻留″计数值″大于所接收的″计数值″,则具有复制存储器位置的更新内容的传入消息无效。
此外,″计数值″和″解析值″的提供和其它简单规则的提供使得能够实现复制存储器位置的一致更新(甚至在存在″冲突″或″竞争″复本更新传送的情况下),所述规则为,如果驻留″计数值″和所接收的″计数值″相等,并且根据所选择/操作的解决规则确定与驻留″解析值″相比的所接收的″解析值″为″胜出值″(例如,由具有较高数字标识的机器发送的复本更新传送胜过由具有较低数字标识的机器发送的复本更新传送,从而使本地对应复本存储器位置被更新),则具有复制存储器位置的更新内容的传入消息有效(即,更新本地对应复本存储器位置)。反过来说,如果驻留″计数值″和所接收的″计数值″相等,但是根据所选择/操作的解决规则确定与驻留″解析值″相比的所接收的″解析值″不是″胜出值″(例如,由具有较低数字标识的机器发送的复本更新传送未胜过由具有较高数字标识的机器发送的复本更新传送,从而未使本地对应复本存储器位置被更新),则具有复制存储器位置的更新内容的传入消息无效(即,未更新本地对应复本存储器 位置)。
因而,如图11-12和18所示,当接收具有与本地/驻留对应″计数值″相同的″计数值″的复本更新消息/传送时,″解析值″可以被用于确定所接收的″冲突″复本更新传送是否″胜出″(即,导致用所接收的复本更新值更新本地对应复本存储器位置)。如果确定这种所接收的冲突复本更新传送″胜出″,则与所接收的冲突复本更新传送相关的更新复本值、计数值和解析值将替换/改写接收机器的对应本地/驻留复本值、计数值和解析值。可选地,如果确定这种所接收的冲突复本更新传送不″胜出″,则不用所接收的复本更新值、计数值和解析值更新本地/对应复本值、计数值和解析值,并且丢弃或忽略所接收的复本存储器更新传送或不更新到本地存储器。总之,通过使用本发明的方法,避免了图7所图解的不一致复本更新情形,并且获得复本存储器位置的一致更新。
另外,提供了本发明的优选的其它改进方案,其存储对应于复本存储器位置的″计数值″和″解析值″。具体地,优选地存储″计数值″和″解析值″,使得其不可被例如应用程序代码的应用程序访问。图19描述了这个进一步优选的存储方案。
图19描述了图2中描述的多个机器中的单个机器M1。为了说明的简单,从这个附图中省略了其它机器(M2-M4),尽管图19的优选存储方案的描述适用于这样多个的所有这种机器(例如图2的机器M2-Mn),以及任何其它复制、分布式或多计算机系统方案。
具体地,图19中指示了机器M1的存储器,其中指示了非应用存储器区N701A,其用虚线正方形指示。对比存储器位置A,B和C,这个存储器优选地对在机器M1上执行的应用程序是不可访问的,并且在这个附图中使用虚线轮廓来指示它并且将它与可访问的存储器位置A,B和C区分。
在图19中描述的优选方案中,″计数值″和″解析值″被存储在这个非应用存储器区,使得其对应用程序和应用程序代码是不可访问的。
现有技术中已知用于非应用可访问存储器区的各种存储器方案和方法,例如使用虚拟存储器、页和存储器管理单元(MMU)以产生对特定指令或代码(例如应用程序代码)不可访问的存储器空间或区域或地址范围。在现有技术中也已知其它方案,例如通过使用名字空间、软件或应用域、虚拟机和分离/独立存储器堆,并且所有这种存储器划分、分离和/或存储 器访问控制方法和方案被包含在本发明的范围内。
这种方案是优选的,使得非应用存储器区N701A中存储的″计数值″和″解析值″不能被应用程序或应用程序代码以未经授权的、无意的、意外或不支持的方式篡改、编辑、操作、修改、破坏、删除或干预。
尽管图19中只指示了单个非应用存储器区,但可以使用不止一个非应用存储器区,并且任何这种多区域方案均被考虑包含在本发明的范围内。
在本发明的至少一个实施例中,单个机器的一个、某些或所有″计数值″和″解析值″可以被存储在内部存储器、主存储器、系统存储器、实存储器、虚拟存储器、易失存储器、高速缓冲存储器,或任何其它主存储器或这种单个机器的其它存储器/存储器中,可以被单个机器的中央处理单元直接访问(或可访问)。
可选地,在本发明的至少一个其它可选实施例中,单个机器的一个、某些或所有″计数值″和″解析值″可以被存储在外部存储器、快擦写存储器、非易失存储器,或任何其他辅助存储器或这种单个机器的其它存储器/存储设备中,不可以被单个机器的中央处理单元直接访问(或可访问)(例如,磁或光盘驱动器、磁带驱动器、快擦写驱动器等等)。
可选地,在本发明的至少一个其它可选实施例中,单个机器的所有″计数值″和″解析值″的某个第一子集可以被存储在内部存储器、主存储器、系统存储器、实存储器、虚拟存储器、易失存储器、高速缓冲存储器,或任何其他主存储器或这种单个机器的其它存储器/存储设备中,可以被单个机器的中央处理单元直接访问(或可访问),并且单个机器的所有″计数值″和″解析值″的某些其它第二子集可以被存储在外部存储器、快擦写存储器、非易失存储器,或任何其他辅助存储器或这种单个机器的其它存储器/存储设备中,不可以被单个机器的中央处理单元直接访问(或可访问)(例如,磁或光盘驱动器,磁带驱动器,快擦写驱动器等等)。可选地,在本发明的至少一个其它可选实施例中,这种第一子集和这种第二子集的″计数值″和″解析值″可以在这种第一和第二子集之间/间移动(例如,来回移动),并且从而也在这种内部存储器(例如主存储器)和这种外部存储器(例如辅助存储器)之间/间移动(例如来回移动)。
重要的是,对包括与复制存储器位置的更新值相关的″计数值″和″解析值″的复本更新消息采取行动的上述方法使得能够检测或有能力检测针 对相同复制存储器位置的两个或更多冲突复本更新消息的出现。此外,由每个接收机器对接收的复本更新消息的这种″采取行动″可以独立于每个其它机器(和可能在不同机器上在不同时间和/或以不同顺序)进行,并且无需这种机器的或之间的附加通信、证实、确认或其它通信来实现对每个所接收的传送的采取行动。
针对多个机器的多个对应复本存储器位置(在这些机器的每一个机器上的每个对应复本存储器位置中的一个),只存在单个″计数值″和″解析值″,并且没有多个″每一个机器″的计数值或解析值,例如机器M1针对复本存储器位置A的唯一″计数值″和/或″解析值″,和机器M2针对复本存储器位置A的第二和不同″计数值″和/或″解析值″。结果,每个机器不需要针对单个复本存储器位置存储多个″计数值″和/或″解析值″(例如,机器M1针对复本存储器位置A存储机器M1的″计数值″和/或″解析值″的拷贝,以及针对复本存储器位置A存储机器M2的″计数值″和/或″解析值″的本地复本,以及针对复本存储器位置A存储机器M3的″计数值″和/或″解析值″的本地复本等等),也不需要针对单个复本存储器位置使用每个复本更新传送发送不止一个″计数值″和/或″解析值″。因此,当包括多个机器的机器的数量增长时,不需要保持单个复制存储器位置的多个″计数值″和/或″解析值″的对应增长。具体地,只为所有机器的所有对应复本存储器位置保持一个″计数值″和″解析值″,并且不为对应复本存储器位置驻留的每个机器保持一个″计数值″和/或″解析值″。因此,当多个机器中的机器数量增长时,不存在针对复制存储器位置的每个机器的″计数值″和/或″解析值″的增长。
本发明考虑到″计数值″和″解析值″和复制存储器位置之间的可选关联和对应关系。具体地,除了上述单个″计数值″和单个″解析值″与每个单个复制存储器位置的″一对一″关联之外,考虑到可选方案,其中单个″计数值″和/或单个″解析值″可以与两个或更多复制存储器位置相关。例如,在可选实施例中,考虑可以根据本发明的方法针对一组相关复制存储器位置存储和/或发送单个″计数值″和/或″解析值″,例如多个复制存储器位置,包括数组数据结构、或对象、或类、或″结构体(struct)″或虚拟存储器页、或其它结构化数据类型,包括两个或更多相关和/或关联复制存储器位置。
优选地,不针对非复制存储器位置或非复本存储器位置存储和/或操作″计数值″和″解析值″(即,在两个或多个机器上未复制并且更新以保持 基本相似的存储器位置)。因此,优选地,不针对这些非复制存储器位置和/或非复本存储器位置存储″计数值″和″解析值″。
优选地,只在复制这种特定复制存储器位置的那些机器(即,对应本地复本存储器位置驻留的那些机器)上存储和/或操作对应于特定复制存储器位置(或一组复制存储器位置)的″计数值″和″解析值″。
优选地,当在某些机器(例如机器M1-M3)上复制的复制存储器位置额外在另一个机器(例如机器M4)上被复制时,则在该另一个机器(例如机器M4)上产生对应于该额外复制存储器位置的本地/驻留″计数值″和″解析值″,并且用已复制该额外复制存储器位置的其它机器的″计数值″和解析值中的至少一个的基本上相似的值初始化(例如机器M1-M3,尽管优选为该另一个机器的初始化的复本存储器值所源自的相同机器)。优选地,在该另一个机器(例如机器M4)上产生和初始化″计数值″和″解析值″的这种过程未使任何其它机器(例如机器M1-M3)的″计数值″和解析值递增、更新或变化。其后,根据上述方法和方案,可以由对应复本存储器位置驻留(例如机器M1-M4)的所有机器(包含额外复制复制存储器位置的该另一个机器)发送和接收复本更新传送。
优选地,当第一个机器(例如机器M1)的非复制存储器位置在一或多个其它机器(例如机器M2-M4)上被复制时,在该第一个机器(例如机器M1)和该其它机器(例如机器M2-M4)两者上产生对应于该复制存储器位置的本地/驻留″计数值″和″解析值″,并且用基本上相似的初值初始化。优选地,这种初值为零(″0″),然而可以使用任何其它可选初值,只要所有机器(例如机器M1-M4)的所有这种对应驻留″计数值″和/或″解析值″上这种可选初值基本上相似。优选地,在该第一个机器(例如机器M1)和该其它机器(例如机器M2-M4)上产生和初始化″计数值″和/或″解析值″的这种过程未使初始″计数值″和/或″解析值″递增、更新或变化。其后,根据上述方法和方案,可以由对应复本存储器位置驻留(例如机器M1-M4)的所有机器(包含第一个机器和其它机器)发送和接收复本更新传送。
因而,使用本发明的以上方法,每个机器M1-Mn能够在多个冲突/竞争复本更新传送存在的情况下,以连贯和一致的方式更新其对应复本存储器位置。具体地,在图12的环境中,由于传入消息73A的计数值与地址#15处的现有计数值相比并发现与现有计数值相同,所以接收消息73A的机器M3首先检测到竞争。在检测到该竞争之后,机器M3接着比较驻留″解析值″和所接收的″解析值″,以便确定胜出值,并且由于1小于3, 所以机器M3拒绝来自机器M1的传入消息,因此保持值92。相反,由于所接收的消息计数8等于现有存储器计数8,所以接收消息74A的机器M1首先检测到竞争。然而,识别出从机器M3发送消息73A(其具有解析值″3″)的机器M1接受该消息,并且由于数字3大于数字1,所以用传入内容92改写现有内容211。
类似地,每个剩余机器M2,M4,M5...Mn按任意顺序接收消息73A和消息74A。由于第一消息的计数8与每个机器M2,M4,M5...Mn中的预先存在的计数值比较并且发现大于预先存在的计数值,接受要接收的第一消息。因而,接受所接收的第一消息。然而,所接收的第二消息触发竞争状态的检测,该状态能够在以下方式中解决,其中机器M1,M2等等被按达到最高值″n″的层次顺序分配数字1,2等等。如果传入消息来自于在层次顺序中具有比发送前一消息的机器的数字更高的数字的机器,则来自具有较高数字的机器的消息被接受。用另一种方式叙述,如果第二个(或随后)接收消息来自于具有比发送前一消息的机器的数字更低的数字的机器,则第二(或随后)接收消息被拒绝。通过这种方式,不仅检测而且解决了冲突情形,并且机器M3的操作优先于机器M1的操作,因而内容92在地址#15处被记录在所有机器中。
显然,允许具有较高数字的机器胜出的决定是完全任意的,并且如果需要可以使较低数字的机器胜出。
在可选方案中,不是依赖于机器层次方面的数字,每个机器可以配有本地产生的随机数,或伪随机数(其在必要时可以不时地变化)。因而,不同机器会不时得到优先,而不考虑较高或较低的随机数是否胜出。
现在参照图24-30,这些附图示出用于具有″计数值″和″解析值″的复本存储器更新的传送的各种有利消息格式。具体地,所示四个可选复本存储器更新消息格式方案可以被用作复本存储器更新分组、消息、帧、信元,或任何其它复本存储器更新传送的数据/分组格式。四个复本存储器更新消息格式中的每个示出具有一或多个更新复本存储器值的复本存储器更新传送中的″计数值″和″解析值″的不同格式化方案。
图24示出包括″n″个更新复本存储器值的第一个复本存储器更新消息1301。具体地,复本更新消息1301被分成″头″部分1302和″有效负载″部分1303。优选地,在该有效负载部分1303内是指示的复本存储器更新值V1,V2...Vn。与每个复本存储器更新值相关的是复本存储器位置标识符″I″、计数值″C″和解析值″R″。在图24中描述的优选消息格式方 案中,指示每个所指示的复本存储器更新值V1,V2...Vn和相关复本存储器位置标识符″I″、计数值″C″和解析值″R″一起分别存储在组1310/1(包含I1,V1,C1和R1),1310/2(包含I2,V2,C2和R2)...1310/n(包含In,Vn,Cn和Rn)中。
转到图25,示出了更有效的复本存储器更新消息格式。更有效的复本存储器更新消息1401具有″n″个更新复本存储器值。类似图24的复本更新消息,复本更新消息1401被分成″头″部分1402和″有效负载″部分1403。然而,不同于图24,只有单个解析值″R″被存储在复本更新消息1401中,其中可以理解单个解析值″R″与所有(或两个或更多)复本存储器值V1,V2...Vn相关,因此由所有复本存储器值V1,V2...Vn使用。具体地,在图25的复本更新消息格式中,可以理解单个解析值″R″与所有复本存储器更新值相关,因此根据该理解,在接收机器解码复本存储器更新消息1401时,像针对图24所示的每个复本存储器更新值存储一次解析值″R″那样,使用/检查单个存储解析值″R″(例如像图24针对解析值R1,R2...Rn的情况那样,针对每个唯一复本存储器更新值存储一次单个解析值″R″)。
复本更新消息格式1401表示的对图24的复本存储器更新消息格式1301的改进是每个复本更新消息只传送一次解析值″R″,而不是单个复本更新消息的多次(像图24针对解析值R1,R2...Rn的情况那样),从而减少复本存储器更新消息的尺寸。尺寸的这种降低通过在所有这种存储复本存储器更新值之间共享单个解析值″R″,允许更多复本存储器更新值被存储在单个复本存储器更新消息中,或可选地用具有较小尺寸的复本更新消息格式发送相同数量的复本存储器更新值。因而,针对单个传送(或单个分组、信元、帧、消息或流)的多个复本存储器更新值,单个解析值的传送表示更有效的传送方案,并且从而需要互连多个机器的网络53的较少传输容量。
接着,在图26,示出另一个可选消息格式。具体地,图26示出另一个改进消息格式方案,从而针对单个复本存储器更新消息/传送的多个复本存储器更新值,只发送单个计数值″C″。这类似于图25的可选方案,其中针对所有(或两个或更多)复本存储器更新值发送单个解析值″R″,并且与每个该值相关。在图26的情况下,针对所有(或两个或更多)复本存储器更新值存储一次计数值″C″,并且与每个该值相关。
具体地,对于图25和24的复本存储器更新消息1401和1301,复本 存储器更新消息1501被分成″头″部分1502和″有效负载″部分1503。然而,不同于复本存储器更新消息1401和1301,针对所有复本值V1,V2...Vn只存储单个计数值″C″。在存储的单个计数值″C″时,针对该单个计数值″C″关联到的所有复本存储器更新值,该单个计数值″C″有必要与计数值规则(即,在传送复本存储器更新时,递增与复本存储器位置相关的计数值的上述规则)一致。具体地,当针对两个或更多复本存储器更新值存储单个计数值″C″时,该单个存储计数值″C″有必要是复本存储器更新消息中该单个计数值″C″关联到的所有复本存储器更新值V1...Vn中最高量值驻留/本地计数值的递增值。另外,当发送包括单个″计数值″的复本存储器更新时,在用于在复本存储器更新传送的时机更新计数值的上述规则的微小修改中,要在复本存储器更新消息1501中发送的单个计数值″C″将被存储以改写被更新的每个复本存储器位置的驻留/本地计数值。
例如,考虑图27-29。在图27中,示出了在机器M1,M2...Mn上复制的三个复制存储器位置A,B和C的情况。接着在图28中,示出了机器M1已修改复制存储器位置A和C的值,并且要更新机器M2...Mn的其它对应复本存储器位置A和C的情形。
通过使用图26的单个复本存储器更新消息格式,机器M1通过所示网络53发送复本存储器更新消息1601B。还示出构成复本存储器更新消息1601B的值,其中指示头字段1602B和有效负载字段1603B。具体指示的是具有值″1″的单个解析值R,具有值″21″的单个计数值C,具有值″A″的第一识别复本存储器位置I1(即,复制存储器位置A的标识),和复制存储器位置A的更新值V1(其是值″211″),后跟具有值″C″的第二识别复本存储器位置I2(即,复制存储器位置C的标识),和复制存储器位置C的更新值V2(其是值″100″)。因而,复本存储器更新消息1601B说明了图26的复本存储器更新消息格式1501的应用例子。
然而,特别注意机器M1的复制存储器位置A和C的更新计数值和解析值。具体地,可观察到机器M1的两个更新复制存储器位置A和C的更新计数值和解析值相同(即,每个的计数值和解析值相同)。现在解释这导致的后果。
参考图27,指示复制存储器位置A的计数值为″7″,同时指示复制存储器位置C的计数值为″20″。如图27中所指示的,指示复制存储器位置A的解析值为″2″,同时指示复制存储器位置C的解析值为″1″。因而,图27分别图解了所应用的复制存储器位置A和C的更新复本值211和 100之前的机器M1的复制存储器位置A-C的状态。
在机器M1的导致修改如图28所示的复本存储器位置A和C的值的操作之后(即,复制存储器位置A的更新值″211″,和复制存储器位置C的更新值″100″),机器M1根据图26的复本存储器更新消息格式1501准备复本存储器更新消息1601B以包括更新复本存储器值A和C。在图28的消息1601B中图解的是具有值″A″的第一识别复本存储器位置I1(其识别复制存储器位置″A″),和相关更新值V1(其是复制存储器位置A的更新值″211″)。类似地图解的是具有值″C″的第二识别复本存储器位置I2(其识别复制存储器位置″C″),和相关更新值V2(其是复制存储器位置C的更新值″100″)。还指示了单个解析值R(具有值″1″),和单个计数值C(具有值″21″)。具体地,现在解释怎样计算/产生这些单个解析值R和单个计数值C。
在这个例子中,在消息1601B中指示具有值″1″的单个解析值R是复本存储器更新消息1601B的发送机器的数字标识(作为机器M1)。因而,根据解析值的上述例子,用作消息1601B的解析值的机器M1的数字标识被作为解析值R存储/发送。像图29中图解的那样,在接收消息1601B时,接收机器对每个复本存储器更新值(例如V1和V2)采取行动时使用该单个解析值R。
如图28中所示图解的,对应于针对消息1601B的单个解析值R计算/产生的解析值″1″,被用作单个解析值R的这种解析值″1″还被存储以改写要通过消息1601B更新的复制存储器位置的驻留解析值(即,复制存储器位置A和C)。因而,如图28所示,根据所产生的消息1601B的单个解析值R,这种单个解析值(即,值″1″)被存储以替换复制存储器位置A和C的驻留/本地解析值,其被分别改写成接近″1″和″1″。
接着,根据要被消息1601B更新的复本存储器位置的一组驻留/本地计数值计算/产生单个计数值C(即,复制存储器位置A和C)。具体地,根据以上描述,通过检查消息1601B的每个要更新的复制存储器位置的驻留计数值,设法确定要通过消息1601B更新的复制存储器位置的最高量值的驻留计数值(即,复制存储器位置A和C),以便确定用作消息1601B的递增单个计数值C的最大(最大)值。参考图27,这种检查确定复制存储器位置″C″的驻留计数值″20″大于作为消息1601B的部分的要更新的复制存储器位置的任何其它驻留计数值(即,复制存储器位置A具有驻留计数值″7″并且复制存储器位置C具有驻留计数值″20″)。因此,选择复 制存储器位置C的驻留计数值(即,值″20″)作为要递增的计数值,并且随后用作单个计数值C,并且该值″20″递增成消息1601B的单个计数值C的值″21″。
一旦用于消息1601B中的单个计数值C被确定/计算,则该单个计数值C被存储以替换/改写要通过消息1601B更新的每个复制存储器位置的驻留/本地计数值,即,复制存储器位置A和C。在图28中也图解了这种情况,其中复制存储器位置A的驻留计数值被指示为已经用消息1601B的单个计数值C的值″21″替换,并且复制存储器位置C的驻留计数值也被指示为已经用消息1601B的单个计数值C的值″21″替换。
现在参照图29,其中示出机器M2...Mn接收复本存储器更新消息1601B并对其采取行动的结果。具体地,可观察到机器M2...Mn的复本存储器位置A具有更新内容″211″,以及更新计数值″21″和更新解析值″1″。以类似方式,机器M2...Mn的复本存储器位置C已经用值″100″更新,以及具有与复本存储器位置A相同的更新计数值和解析值,其分别是″21″和″1″。具体地,现在解释在接收复本存储器更新消息1601B时图29中发生的处理。
当接收机器(例如机器M2)接收复本存储器更新消息1601B时,该接收机器对该所接收的消息1601B采取行动。在对该复本更新消息1601B采取行动时,接收机器比较单个计数值C和与要通过消息1601B更新的每个复制存储器位置相关的驻留计数值(即,复本存储器位置A和C)。因而,根据比较计数值的上述规则,接收机器最初比较消息1601B的单个计数值C和与复本存储器位置A相关的驻留计数值。根据上述计数值比较规则,如果消息1601B的单个计数值C大于与复本存储器位置A相关的驻留计数值,则接收机器的复本存储器位置A被更新(改写)成消息1601B的更新复本值V1,并且接收机器的相关驻留计数值和解析值分别更新(改写)成单个计数值C(即,值″21″)和单个解析值R(即,值″1″)。
可选地,如果消息1601B的单个计数值C小于与复本存储器位置A相关的驻留计数值,则接收机器的复本存储器位置A不被消息1601B的更新复本值V1更新(改写),并且不更新(改写)相关驻留计数值和解析值。
最终,可以有第三种情形,其中消息1601B的单个计数值C(即,值″21″)的比较和与接收机器的复本存储器位置A相关的驻留计数值相同(例如等于)。当像这样的情形出现时,冲突情形被检测和通知,并且比较消息1601B的单个解析值R(即,值″1″)和与接收机器的复本存储器位置 A相关的驻留解析值。根据解决规则,接着确定两个所比较的解析值中的哪个将胜出。如果确定消息1601B的单个解析值R胜过与复本存储器位置A相关的驻留解析值,则接收机器用消息1601B的更新复本值V1更新(改写)复本存储器位置A,并且也用单个解析值和单个计数值分别更新(改写)相关驻留解析值和可选地相关计数值。可选地,如果确定与复本存储器位置A相关的驻留解析值胜过消息1601B的单个解析值R,则接收机器不会用消息1601B的更新复本值V1更新(改写)复本存储器位置A,以及不会更新相关驻留解析值和/或计数值。
针对被识别出要通过消息1601B更新的每个识别复本存储器位置(即,复制存储器位置C),类似重复(已作必要修正)针对复本存储器位置A所描述的这种对复本更新消息1601B采取行动的过程(即,如针对标识I1和相关的复本更新消息1601B的值V1描述的过程)。因而,在图29中观察到,每个接收机器(即,机器M2...Mn)的复本存储器位置C被用新值″100″、新解析值″1″和计数值″21″更新,其对应于消息1601B的单个解析值R和单个计数值C(并且公用于复本存储器位置A)。参考图26的消息格式1501,针对每个分立的所标识的复本存储器位置和相关值(例如I1和V1,I2和V2,...,In和Vn),重复接收包括单个解析值和/或单个计数值的复本更新消息并对其采取行动的上述步骤。
图30示出存储复本更新消息1601D中的单个解析值R和单个计数值C的可选方案。具体地,复本更新消息1601D示出作为头字段1602D(像图26中的情况那样代替有效负载字段1603D)的部分存储的单个解析值R和单个计数值C。在另一个可选方案中,任意一个单个计数值C或单个解析值R可以被存储在头字段1602D,其它两个值可以被存储在″有效负载″字段1603D。单个解析值R和单个计数值C的各种其它存储和传送方案是计算机和/或电气工程领域的技术人员能够想到的,并且将被包含在本发明的范围内。
在图24的可选实施例中,不是由每个机器M1,M2...Mn发送单个消息到所有其它机器,而是由单个机器只发送单个消息到于是准备广播消息(例如图24中图解的消息1301)的服务器机器X。在这个例子中,″n″个复制存储器位置/地址同时被消息1301更新,其中每个具有其单个内容/值V1,V2...Vn,和这些值涉及到的复制存储器位置的对应标识(即,分别地标识I1,I2...In)。因而,广播或组消息1301具有″n″个计数值,在这个例子中C1,C2...Cn(分别对应于值V1,V2...Vn)也具有″n″个解析 值(也分别对应于值V1,V2...Vn),并且组消息被服务器机器X广播给所有应用运行机器M1,M2...Mn。
重要的是,在图26和30的所有方案中,将组消息1501的单个计数值与所标识的(即,分别通过标识符I1,I2...In)、针对每个标识复制存储器位置存储的对应驻留/本地计数值进行比较,并且应用比较计数值和检测和解决竞争的上述规则。具体地,比较计数值并且检测和解决竞争的规则基本上与用于图24的方案的相同(已作必要修正)(其中,每个复本存储器更新值与唯一计数值和唯一解析值相关),但是基于广播消息1301的单个计数值和单个解析值,其被理解为与图26中示意性指示的每个复本存储器更新值相关。
在图26和30的另一个实施例中,单个机器只发送单个消息到于是准备广播消息的服务器机器X(例如图26中图解的消息1501,和图30中图解的消息1601D)。在这个例子中,″n″个地址被消息1501/1601D同时更新,其中每个具有其单个内容/值。因而,广播或组消息1501/1601D具有单个计数值″C″和单个解析值″R″,并且组消息通过服务器机器X被广播到所有应用运行机器M1,M2...Mn。组消息1501/1601D的单个计数值与针对每个复制存储器位置存储的对应驻留计数值相比较,并且应用比较计数值和检测和解决竞争的上述规则。检测和解决竞争的规则相同,并且基于广播消息1501/1601D的单个计数值C和单个解析值R,其被理解为与图26中示意性指示的每个复本存储器更新值V1,V2...Vn相关。
重要的是,在图26和30的所有方案中,将组消息1501/1601D的单个计数值与针对每个标识复制存储器位置存储的所标识的(即,分别通过标识符I1,I2...In)对应驻留/本地计数值相比较,并且应用比较计数值和检测和解决竞争的上述规则。具体地,比较计数值和检测和解决竞争的规则基本上与用于图24的方案的相同(已作必要修正)(其中,每个复本存储器更新值与唯一计数值和唯一解析值相关),但是基于广播消息1501/1601D的单个计数值和单个解析值,其被理解为与消息1501/1601D的每个复本存储器更新值相关。
优选地,如图26和30所示,变成被递增、存储和发送的单个计数值广播的计数值″C″被选择为针对要通过消息1501/1601D更新的″n″个复制存储器位置/地址提供的最高量值驻留/本地计数值。最高量值计数具有这样的优点:其根据上述比较规则,针对它要关联到的所有″n″个复制存储器位置操作,并且与低量值的计数值相比可能遇到更少的竞争。
应当理解,将更新消息组合在一起以便提供如图26和30所示的组消息1501/1601D(并且另外在图24和25的可选方案中),基本上降低了在网络53上发送的消息的数量和数据总容量,并且因而减轻了网络53上的负载。
最终,在复本存储器更新消息的可选方案中,可以针对单个复本存储器更新传送发送单个计数值和/或单个解析值,其中这种单个传送可能包含多个分组、信元、帧或消息。因而,在像这样的可选实施例中,其中单个复本存储器更新传送包括单个发送的计数值和/或解析值,优选地,具有这种单个复本存储器更新传送的多个消息中只有单个复本存储器更新消息会包含单个计数值和/或解析值。
也能够明白,由于与每个复制应用存储器位置/内容相关的″计数值″和/或″解析值″的存储(例如单个组合32位值)占用较大存储器空间/容量,其接近复制应用存储器位置/内容自身占用的空间/容量,所以上述方案基本上增加了每个机器上所需存储器的量。因而,与复制应用存储器位置/内容相关的该所存储的″计数值″和/或″解析值″表示一起作为复制共享存储器方案操作的多个计算机的每个的可能基本本地存储器开销。这不太理想,因而期望构思一种方法,用于通过减少与复制应用存储器位置/内容相关的本地/驻留″计数值″和/或″解析值″所占用的本地存储器容量来降低这种本地存储器开销。
根据第一实施例,公开了一种方法,其在每个机器的本地存储器中,通过减少所存储的″计数值″和/或″解析值″表示的存储器开销的方式,删除与复制应用存储器位置/内容相关的″计数值″和/或″解析值″。这里公开的方法利用这样的事实:在根据复制共享存储器方案操作的多计算机系统处理应用程序期间,复制应用存储器位置/内容的存储器读取通常比复制应用存储器位置/内容的存储器写入多许多,因而与复制应用存储器位置/内容的读取相比,复制应用存储器位置/内容的写入通常相对不频繁。具体地,根据复制共享存储器方案操作的原型多计算机系统的非商业操作表明,对于许多应用程序,在应用程序初始化一或多个复制应用存储器位置/内容期间,通常存在写入活动的突发,此后在应用程序的剩余操作中根本没有对相同复制应用存储器位置/内容的写入活动出现。一个这样的例子(而不是唯一例子)是通过复制应用存储器内容/值的应用程序进行的初始化,复制应用存储器内容/值在初始化之后保持恒定(即,在初始化之后未被写入或修改)。
根据优选实施例,在针对关联复制应用存储器位置/内容未发送或接收复本存储器更新传送的经过时间段之后,与复制应用存储器位置/内容相关并且存储在根据复制共享存储器方案操作的多计算机系统的成员机器的本地存储器中的″计数值″和/或″解析值″被删除。
例如,在一个这种方案中,所选择的经过时间段可以是一个小时,以便在经过没有发送或接收特定复制应用存储器位置/内容的复本存储器更新传送的一个小时的时段之后,存储在本地机器的本地存储器中的相关″计数值″和/或″解析值″可以被删除、收回、垃圾收集,或由这种相关″计数值″和/或″解析值″占用的本地存储器可以被″释放″以便可用于存储其它数据/内容(可能包含其它应用或非应用存储器内容或数据)。
显然,在实施以上方法之前,也可以使以上方案以任何最小经过时间段操作,可能包含可变或变化的最小时间段。在一个例子中,所选择的最小经过时间段可以是1小时。在可选的例子中,另一个所选择的最小经过时间段可以是1秒。
另外,在达到最小经过时间段时立即执行以上方法并不是本发明的要求。相反,在经过所选择的最小时间段(可能包含可变或变化的最小时间段)之后,在此后没有限制或约束的任何点执行以上方法。例如,在发生最小经过时间段之后,上述方法的执行结果(即,删除相关″计数值″和/或″解析值″)可能在许多秒、许多分钟或甚至许多小时以后出现。
此外,在发生最小经过时间段之后,上述方法和实施例的执行结果被延迟或延期,直到本地机器的本地CPU或类似处理逻辑不繁忙(或不是很繁忙)的时间,并且因而相关″计数值″和/或″解析值″的删除(等等)被作为内务处理功能完成,而无需影响应用程序或计算机整体的性能。
另外或可选地,在发生最小经过时间段之后,上述方法和实施例的执行结果(即,相关″计数值″和/或″解析值″的删除)可以在应用程序或计算机的可用/空闲/″释放″存储器较低的情况下完成,因而期望存储器被整理和缩减以便满足对本地存储器容量的其它合理需要或要求。
可以不删除″计数值″和/或″解析值″,而是减少尺寸到单个位(或比缩减之前位更少的任何格式或方案)。
在某些应用编程语言中,程序员打算在初始化之后不改变的应用存储器内容/值能够被标记为″最终″等等以通知计算机系统这种值在初始化之后不会改变。对于使用特定应用存储器位置/内容的这种″最终″等等标记 或标识符的应用程序,能够方便地使用删除计数值的上述方法减少本地存储器开销,其中与这种有″最终″等等的标记的应用存储器位置/值相关的″计数值″和/或″解析值″表示此开销。
另外,对于不提供或支持这种″最终″等等标记或标识符的应用编程语言,有利地使用删除″计数值″和/或″解析值″的上述方法,因为上述方法不依赖于程序员将应用存储器位置/内容标记为″最终″等等以便对充当复制共享存储器方案的多个计算机实现减少本地存储器开销的有利结果。
然而,充当复制共享存储器方案的原型多计算机系统的非商业操作也表明,即使在编程语言支持对应用存储器位置/内容使用″最终″标记等等时,程序员(因此他们编写的应用程序)常常不使用可用″最终″标记等等。相反,即使在程序员可能利用这种″最终″标记等等时,他们常常不利用这种″最终″标记等等(有意或者无意)。因而,上述方法和实施例的另一个好处在于使用″最终″标记等等对于实现由上述方法提供的有利益处不是必要的。因而,在应用程序员省略(有意或无意)使用″最终″标记等等的应用程序中,本发明的方法能够被有益地使用,从而减少本地存储器开销,其中针对这种复制应用存储器位置/内容,相关″计数值″和/或″解析值″表示所述开销。
现在描述存储和更新″计数值″的具体例子。具体地,上述″计数值″可以有益地用于保证复制共享存储器方案的多个机器的复制应用存储器位置的一致更新。
然而,由于与每个复制应用存储器位置/内容相关的″计数值″(例如32位值)的存储占用了较大存储器空间/容量,其中该存储器空间/容量接近复制应用存储器位置/内容自身占用的空间/容量,所以这种″计数值″大大增加每个机器所需的存储器容量。因而,与复制应用程序存储器位置/内容相关的这种所存储的″计数值″表示一起作为复制共享存储器方案操作的多个计算机中的每个的可能基本本地存储器开销。这不太理想,因而期望选择小值(即,占用较少本地存储器容量的小值)来用作″计数值″,以便减少所存储的计数值表示的本地存储器开销。
例如,在″计数值″是32位整数值的情况下,针对每个复制应用存储器位置,存在相关的32位″计数值″。这表示非常可观的本地存储器开销。另一方面,在″计数值″是16位或甚至8位值而不是32位值的情况下,该″计数值″表示的本地存储器开销分别有效地缩减2或4倍。因而,期望使用尺寸/容量减少的″计数值″。
然而,由于″计数值″的值尺寸减少(例如,从32位到8位),所以在达到减少″计数值″的最大值限制之前可以执行的上述递增操作的最大数(即,在复本存储器更新传送时对本地/驻留″计数值″执行上述递增操作)也减少。当值尺寸非常大(例如32位,或甚至64位)时,可以进行数百万、数十亿或甚至更多上述递增操作,而不达到该极大值尺寸所支持的最大递增值。另一方面,当使用小值尺寸,例如8位值时,上述递增操作的最大数量显著减少到刚好256个慎重(discreet)值,因此最多255个慎重递增操作。因而,虽然在减少本地存储器开销(例如与32位值相比)方面有吸引力,然而8位″计数值″仅在对这种8位″计数值″执行的最大递增不超过最大支持数255的情况下适用。
如果使用所存储的″计数值″的8位无符号字节值,并且没有策略被用来保证″计数值″的″算术溢出″不出现,则当256个递增操作发生时,下列不期望的情形会出现。最初,对于第一批255个递增操作,所有操作正常并且所存储的″计数值″根据上述描述(例如1,后跟2,3,4...253,254,255)增加其值。结果,递增″计数值″在期望和如上所述情况下有效地操作以保证复制应用存储器位置的一致更新。
然而,当″计数值″为255时进行第256个递增操作时,不是得到作为这个第256个递增操作的结果而产生并且存储为新本地/驻留″计数值″的递增值256,不是得到″计数值″″0″。在计算领域中这被称作″算术溢出″,并且当计算(例如递增操作)产生比指定寄存器或数据类型或存储器存储器位置能够存储或表示的量值更大的结果时出现。此外,在第257个递增时,结果值为″1″,依此类推,直到再一次达到值255,在此处,下一个递增操作会再一次导致算术溢出状态,并且处理继续。
作为这种计数值的算术溢出的结果(例如8位″计数值″),如果发送具有相关溢出″计数值″″0″的与第256个递增操作相关的复本存储器更新传送,则接收机器考虑这种复本更新传送(和稍后具有″计数值″1,2,3...,254的复本更新传送)为″陈旧″或″旧″值,这种复本存储器更新传送的″计数值″小于接收机器的对应本地/驻留″计数值″,例如″255″(即,算术溢出之前的最后递增值)。因而,具有在多个机器上有效″停止″复本存储器更新事件的结果,接收机器在再次比较本地/驻留″计数值″和算术溢出之前的更大值时丢弃/拒绝所有稍后发送的、具有″溢出计数值″的复本存储器更新传送。结果是混乱或至少不确定,其中各种计算机的复本应用存储器位置/内容不再被更新,和/或不再彼此一致。显然非常不期望这样。
在克服上述不期望结果的第一实施例中,由每个机器不时地检查一或多个(或每个或所有)″计数值″。当所检查的″计数值″达到某个阈值(例如接近最大值255的数250,或可选地在″计数值″的算术溢出时立即或之前的数),则临时停止对应于该″计数值″的复制应用存储器位置/内容的所有复本存储器更新传送。当在算术溢出之前启动传送的临时停止时(或在算术溢出即时),所有存储器位置是一致的(即具有相同值),并且由于该算术溢出,所以可能尚未出现复本应用存储器位置/内容的不一致更新。在针对所影响的复制应用存储器位置/内容的复本存储器更新传送的停止期间,针对该(或那些)所影响的复本应用存储器位置/内容,每个机器的每个对应″计数值″被复位或重新初始化为零(或某些其它低量值数,例如1,2或3等等)。一旦实现该复位或重新初始化,则传送停止被结束,并且所影响的复本应用存储器位置/内容的复本存储器更新传送恢复。每当″计数值″达到预定阈值(例如上述例子中的250)时重复这个事件周期。
在第二实施例中,针对一或多个复本应用存储器位置/内容的复本存储器更新传送的临时停止以规则或半规则或预定时间间隔发生,例如每秒或每60秒一次。并且在复本存储器更新传送中的每个停止期间,所有相关的″计数值″被复位或重新初始化为零。
在第三实施例中,可以组合上面所描述的两个实施例,其中针对一或多个复本应用存储器位置/内容的复本存储器更新传送的临时停止以规则或半规则或预定间隔发生,然而如果在下一个规则或半规则或预定停止发生之前″计数值″达到某个阈值,则对应于这个″计数值″的复制应用存储器位置/内容的所有复本存储器更新传送被临时停止并且复位或重新初始化为零。
现在参照图31-36,现在描述涉及多计算机系统的另一个问题,该问题是存储器更新中的″回声″问题。
参见图31,多计算机系统的两个机器Mn和Mn+1最初具有相同的复制应用存储器位置/内容″x″,其中的每个具有值7(但是可以同样是例如代码或指令的某些其它内容)和相关的本地计数值2。图31图解了从图的顶部延伸到底部的时间。在机器Mn进行处理期间的某个时刻,产生复制应用存储器位置/内容的新的/变化的值/内容,该新的/变化的值是99。在向所有其它机器(即机器Mn+1)传播新/变化值99中指示两个不同时间。第一个时间Ta是提醒机器Mn的DRT在机器Mn上执行的应用程序的部分已对复制应用存储器位置″x″写入并且作为结果机器Mn的复制应用 存储器位置″x″的值变化的时间。第二个时间Tp是机器启动实际传播并且在这个例子产生新计数值3的时间。即,第二个时间Tp是机器Mn发送复本存储器更新传送2101的时间,该复本存储器更新传送2101包括复制应用存储器位置″x″的标识和更新值(即,″99″)和相关″计数值″″3″(并且尽管未在图31中示出,优选另外包括复本应用存储器位置″x″的相关″解析值″)。例如,两个时间Tp和Ta之间的延迟可以有纳秒那样小或有秒那样大。该延迟很大程度上取决于机器Mn在相关时间处的计算负载。
通过网络53,从机器Mn向机器Mn+1发送更新存储器位置″x″的内容的复本存储器更新传送/消息2101,并且在时间Tp+d到达机器Mn+1,其中″d″是网络中传送2101进行传播的固有的延迟/时延。当机器Mn+1在时间Tp+d处接收到传送2101时,本地复本应用存储器位置/内容″x″的本地内容在机器Mn+1中变化成与机器Mn相同的传送2101的所接收值,即值/内容99和″计数值″3。
在此后的某个时间,在机器Mn+1上操作的相同应用程序的执行部分执行另一个处理,该处理导致新值被写入存储器位置″x″,该新值是1082。在时间Ta处,提醒机器Mn+1的DRT在机器Mn+1上执行的应用程序的部分已对复制应用存储器位置″x″写入并且作为结果机器Mn+1的复制应用存储器位置″x″的值变化。因此,在其后的另一个时间Tp处,复本应用存储器位置″x″的新/变化值被作为传送2102和所递增的相关″计数值″″4″一起传送。随后,传送2102到达机器Mn,其中复本应用存储器位置″x″的前一值(即,99)和″计数值″4一起被所接收的传送2102的新值(即,值1082)改写。
也就是说,在图31中图解的环境中,在提醒的产生和传播的开始之间的固有延迟未对多个机器的期望正确功能有不利影响。
然而,并不始终是这样,并且在图32图解了可选的情形。在图32中,最初两个机器具有相同的复本应用存储器位置/内容″x″的值/内容7和相同相关计数值2。像前面那样,在时间Ta处,提醒机器Mn的DRT在机器Mn上执行的应用程序的部分已对复制应用存储器位置″x″写入并且作为结果机器Mn的复制应用存储器位置″x″的值变化。随后,在时间Tp处,机器Mn传送复本应用存储器位置″x″的新/变化值和递增″计数值″3作为复本存储器更新传送2201。然而,在复本存储器更新传送2201到达机器Mn+1的时间Tp+d之前,机器Mn+1通过执行在机器Mn+1上执行的应用程序的部分的其自身处理已经对复制应用存储器位置″x″写 入,并且作为结果将复本应用存储器位置″x″的值变化为1082。因而,在基本上相似时间Ta处提醒机器Mn+1上的DRT:在机器Mn+1上执行的应用程序的部分已对复制应用存储器位置″x″写入并且作为结果机器Mn+1上的复制应用存储器位置″x″的值变化。随后,机器Mn+1的DRT发送包括机器Mn+1的复本应用存储器位置″x″的新/变化值和递增″计数值″3的复本存储器更新传送2202。如图32所示,在时间Tp+d(其对应于机器Mn+1接收传送2201)之前发送机器Mn+1的该传送2202。
作为机器Mn的传送2201和机器Mn+1的传送2202都在接收其它传送之前被发送的结果,由于和复本应用存储器位置″x″相关的本地/驻留″计数值″将与其它机器的所接收复本更新传送的相关″计数值″竞争/冲突(例如相等),机器Mn和Mn+1当接收其它机器的传送时检测到竞争/冲突情形。
根据冲突检测和解决的上述规则,针对上述图32的情况,竞争能够被检测,并且通过使用如上所述的相关″解析值″,竞争能够被解决,使得存储器位置D的内容对于两个机器相同。因而,当使用上述的″解析值″的简单实施例(即,机器的数字/层次编号)时,竞争/冲突的情形会被解决,使得由较高编号的机器Mn+1产生的更新值会胜过较低编号的机器Mn。
在图33中图解了略微不相同的问题。像前面那样,两个机器开始时复制应用存储器位置/内容的值为7并且相关的″计数值″为2。可选地,尽管未在图33中指示,可存储与复本应用存储器位置/内容″x″相关的本地/驻留″解析值″。再次在时间Ta处,提醒机器Mn的DRT:机器Mn的应用程序的部分的执行已对复本应用存储器位置/内容″x″写入并且作为结果复本应用存储器位置″x″的值变化。因此,复本应用存储器位置/内容″x″的新/变化值99通过传送2301在时间Tp传送并且在时间Tp+d到达机器Mn+1。
然而,在复本存储器更新传送2301到达之前的不久,提醒利用其自身的相同应用程序部分的处理的机器Mn+1的DRT:机器Mn+1的相同应用程序的执行部分已对复本应用存储器位置″x`″写入并且作为结果复本应用存储器位置″x″的值/内容变化,并且DRT将复本应用存储器位置/内容″x″的当前/变化的内容/值传送给机器Mn。然而,在机器Mn+1的时间Ta之后但是在传播之前,可以在时间Tp+d执行传播,机器Mn的复本存储器更新传送2301被接收和采取行动,使复本应用存储器位置/内容″x″的值/内容被用所接收的传送2301的更新值改写(即,所接收的更新值 ″99″)。结果,当在时间Tp+d处对应于时间Ta的提醒的复本存储器更新传送2302的传播发生时,这个改写值99,而不是机器Mn+1的初始写入值″1082″,和增加的″计数值″4一起被传送回到包含Mn的所有其它机器。作为如图33所示的结果,由机器Mn+1发送的复本存储器更新传送2302包含″更新″值99(在传送2301中最初从机器Mn接收)而不是″1082″和相关的递增″计数值″4。
在图33中描述的情形的结果是机器Mn+1发送机器Mn的传送2301的所接收更新值″回声″,而不是机器Mn+1的初始写入值(即,值1082)。结果,机器Mn接收先前在传送2301中发送的更新复本值的回声,即″99″,加上所接收的增加″计数值″4。这个传入消息/传送2302由机器Mn正确地处理和采取行动,因此用所接收的值″99″改写复本应用存储器位置″x″的现有值(与接收传送2302之前的复本应用存储器位置″x″恰好相同)并且用所接收的传送2302的″计数值″4改写相关驻留″计数值″。
在机器Mn接收传送2302之后,两个机器具有复本应用存储器位置/内容″x″的相同值/内容99和计数值4。因而,在一个水平上实现了复本存储器位置的一致更新。然而,尽管机器Mn和Mn+1的对应复本应用存储器位置/内容是一致的(即,值/内容基本相似),但两个机器的最终值/内容是″回声″/″陈旧″值″99″和递增计数值″4″。如下所述,因为至少两个原因而不期望这样。
首先,由于这样的传送不包含更新值,而是包含″已存在″值,来自传送2301的包含″回声″值″99″的第二个传送2302表示多余传送。由于传送2302发送″已存在″值而不是新/变化值,因此传送2302是网络53的带宽和容量的低效使用,所以不期望这样。
其次,包含″回声″值″99″和递增″计数值″4的第二个传送2302可能导致复制应用存储器位置的不一致更新,并且在图35中示出这个可能情形。因而,期望构思禁止或不发生这种多余/″回声″复本存储器更新传送的方案。
参考图34,公开了图33中描述的回声问题的第一解决方案。与图33中相同的定时情形在图34中呈现,其中在提醒机器Mn+1的DRT复本应用存储器位置/内容″x″被写入新值(即,新/变化值1082)的机器Mn+1的时间Ta之后,来自机器Mn的复本存储器更新传送2301在时间Tp+d到达机器Mn+1。针对这个解决方案,改变所有机器的操作以保证在接收所传送的复本存储器更新传送/消息之后,每个接收机器将进行检查以确 定是否已经″提醒″(例如,DRT是否处于被提醒状态)DRT执行对应于所接收的复本存储器更新传送的本地/驻留复本应用存储器位置/内容的复本存储器更新传送/传播。
如果这个检查的回答为是,则接收机器的DRT为″解除提醒″(或取消、撤回或废除前一″提醒″),从而阻止执行本地/驻留复本应用存储器位置/内容的所期望的复本存储器更新传送/传播。结果,由于通过取消、撤回、废除或″解除提醒″接收机器的DRT的前一″提醒″来避免潜在″回声″传送2302,避免了图33的情形。反之,如果回答为否(即,如果不存在对应复本应用存储器位置/内容的本地/驻留的前一″提醒″),则恢复正常操作(即,在未这样做的情况下对所接收的复本存储器更新传送采取行动)。
这是图34所图解的情形,其中当接收对应于机器Mn+1的″提醒″复本应用存储器位置″x″的传送2301时,传送机器Mn+1的复本应用存储器位置″x″的新值1082的提醒被取消(或撤回、废除或解除提醒)。另外,所接收的值99被写入机器Mn+1的本地/对应复本应用存储器位置/内容″x″,此外,与复本应用存储器位置/内容″x″相关的驻留″计数值″被改写成所接收的计数值3。结果,如图34中的指示,由于传送机器Mn+1的复本应用存储器位置/内容″x″的新/变化值的前一″提醒″被取消、废除、撤回或″解除提醒″,图33的第二个″回声″传送2302未发生。
作为这个修改的结果,图33的回声情形被阻止,并且以连贯和一致的方式用复本存储器更新传送更新所有机器。另外,通过取消第二个多余复本存储器更新传送2302,保留了网络53的宝贵带宽和容量,从而提高了整个根据复制共享存储器方案操作的多计算机系统的性能和效率。
在图35中图解了比图33中图解的略微复杂的问题。具体地,图35示出了图33的扩展情况,从而图33所描述的有问题情形被扩展,以说明当如第一解决方案中所描述的未取消、撤回、废除或″解除提醒″第二个传送2302时,复本应用存储器位置/内容的不一致更新的结果。图35中具体地示出另外的复本存储器更新传送2501,其出现在传送2301之后但是在接收传送2302之前的某时。
在图35中,像在图33中那样,在提醒机器Mn+1的DRT传送新写入值″1082″之后,但在该传送进行之前(以复本存储器更新传送2302的形式),在机器Mn+1处接收复本存储器更新传送2301。结果,像在图33中那样,在时间Tp,来自机器Mn+1的随后复本存储器更新传送/传播2302包含″回声值″99和递增″计数值″4,作为由机器Mn+1前面接收和操作复 本存储器更新传送2301的结果。
同时,机器Mn执行的处理导致新值33被写入机器Mn的复本应用存储器位置/内容″x″。这个新写入值33和递增的相关计数值4一起作为复本存储器更新传送2501被机器Mn传送。
然而,如可在图35中观察到的,都对应于相同复本应用存储器位置″x″的两个复本存储器更新传送2501和2302,和相同递增″计数值″4一起被发送。因而,根据上述描述,这2个复本存储器更新传送被称作竞争,因为当机器Mn+1接收传送2501时,以及当机器Mn接收传送2302时,在所接收的传送和对应驻留″计数值″(两者具有相同值4)之间检测到″竞争″″/″冲突″的情形。
具体地,像传送2501和2302(分别包含值″33″和″99″)之间的冲突情形那样极不期望的这种情况实际表示由相同的机器Mn产生的两个值″99″和″33″之间的冲突情形(与由不同机器产生的两个不同值相对)。显然,当值″99″显然与应用程序和应用程序员期望的那样是″旧″和″不一致″值时,复本应用存储器位置/内容″x″的应用程序和应用程序员的正确和期望值应当是″33″而不是″99″。
然而,根据冲突检测和解决的以上描述,与复本应用存储器位置″x″相关的驻留和发送″解析值″可以被用于解决这种所检测的竞争/冲突情形以单个胜出传送(因此这种胜出传送的单个胜出值)。当在图35的情形中使用利用如上所述的发送机器的数字/层次标识符的″解析值″的简单实施例时,机器Mn+1的传送2302会胜出。这在图35中由框2310和2311指示,其中指示出在时序的末端,每个机器Mn和Mn+1决定复制应用存储器位置/内容″x″的一致值″99″(当机器Mn+1的数字/层次值大于机器Mn的数字/层次值时)。显然,由于机器Mn的稍后写入值″33″被相同机器的较早写入值″99″改写,这仍然是不期望的结果。显然,无意的和不一致的应用程序操作和应用程序的行为可源于图35中描述的环境和操作。
现在参考图36描述针对上述情形的可选解决方案。
图36示出类似于图35的方案,其中根据第二个可选实施例,更改的地方是由机器Mn用新传送2601替换复本存储器更新传送2501。具体地,参见图36,涉及传送2301和2302的初始操作和环境与图35中相同,其中机器Mn+1发送作为第二个传送2302的所接收的传送2301的值的″回声″回到包含机器Mn的所有其它机器,该″回声″传送包含复本应用存储 器位置/内容″x″的″回声值″″99″和相关的递增″计数值″4。
然而,在图36的方案中,通过引入简单规则来修改所有机器的操作,即在机器将要发送/传播包含复本应用存储器位置/内容的新/变化值的新复本存储器更新传送,并且相同机器是产生相同的复本应用存储器位置/内容的前一复本更新传送的前一机器的情况下,新产生的复本存储器更新传送的计数值未递增1,而是递增2(或至少2)。
例如,通过在每个机器上存储或记录对应于复制应用存储器位置/内容的、最近的复本存储器更新传送(无论被发送或被接收)是否由本地机器发送的指示,能够实现这样的有利规则。如果这个所存储的记录或指示表明由本地机器发送或接收的特定复本应用存储器位置/内容的最近复本存储器更新传送被该机器发送(发出),则相关本地/驻留″计数值″(及所发送的″计数值″)未递增1(如果″1″是″规则″递增单位),而是递增2(或可选地,递增任何适当值,以便是高于(或分别低于)″规则″递增的至少一个递增(或递减)单位)。可选地,如果这个所存储的记录或指示表明本地机器发送或接收的特定复本应用存储器位置/内容的最近复本存储器更新传送未被该机器发送(发出),则相关的本地/驻留″计数值″(及所发送的″计数值″)递增1(如果″1″是″规则″递增单位)。
在图36中示出了提供给图35的环境的这种规则的结果。作为这个新规则的结果,由机器Mn传播的复本存储器更新传送2601包含像前面那样的更新/改变值″33″,但是现在包含计数值5而不是4(值5是驻留/本地″计数值″3递增2产生的)。结果是由于复本存储器更新传送2601具有高于传送2302的″计数值″,所以包含″正确″更新/改变值33的、复本应用存储器位置/内容″x″的复本存储器更新传送2601胜出,代替了复本存储器更新传送2601和2301之间导致的竞争/冲突的状态。结果,在两个传送2302和2601之间未出现竞争/冲突情形,并且获得复制应用存储器位置/内容″x″的一致更新。
显然,也可以使以上方案这样操作,以使得更新计数的正常递增为比如2,并且更新计数的回声抑制递增为3(或4,或超过4)。
计算领域的技术人员明白,前面只描述了本发明的某些实施例,并且可以对其进行修改而不偏离本发明的范围。例如,对JAVA的引用包含JAVA语言以及JAVA平台和体系结构两者。
类似地,上述″计数值″和″解析值″是整数,但是不需如此。分数″计 数值″和/或″解析值″(即,使用浮动或浮点运算或十进制分数)是可以的,但是不期望地复杂。
本领域的技术人员还应当理解,可递减″计数值″,而不是递增连续消息的″计数值″。这导致由较低″计数值″而不是上述较高″计数值″识别最近消息。
由本发明提供发送″解析值″的可选方案。具体地,预期复本存储器更新传送的发送″解析值″具有分组或消息的头值,例如分组或消息的地址或标识或源机器的形式。因而,″解析值″可以具有任意发送形式,只要可以根据使用″解析值″解决冲突复本更新传送的上述方法使用这种发送值。
在本发明的可选实施例中还假定在复本存储器更新传送中发送的″计数值″和/或″解析值″可以具有任意形式,包含头或其它分组域。
在上述各实施例中,描述了写入复制存储器位置的本地/驻留″计数值″在发送机器发送复本更新传送之前或当时递增值″1″。还描述了存储这种递增″计数值″以改写/替换发送机器的前一本地/驻留″计数值″(例如,即,来自计算递增″计数值″的本地/驻留″计数值″)。然而,本发明不要求这种递增″计数值″必须递增值″1″。相反,提供了可选方案,其中这种递增″计数值″可以(或已经)递增超过″1″的值(例如,″2″或″10″或″100″)。具体地,对于本发明,选择什么递增值以用来递增″计数值″并不重要,只要所得到″递增计数值″大于前一本地/驻留″计数值″。
此外,还提供了递增驻留″计数值″的可选方案。具体地,本发明不要求复本更新传送的这种更新″计数值″必须递增,并且相反,任何其他方法或装置或方案可以被替换以实现大于前一本地/驻留″计数值″的更新″计数值″的结果。因此,重要的是对应于被发送的复本更新传送,这种复本更新传送包括″更新计数值″,其大于发送机器的前一已知″本地/驻留计数值″(例如在传送时已知,或可选地在该复本更新传送准备或开始准备传送时已知),以及发送机器的这种前一已知″本地/驻留计数值″被用所发送的″更新计数值″改写/替换。
另外,本发明的可选方案假定″计数值″和″解析值″可以被存储和/或充当组合值,例如作为单个32位值的低24位存储的″计数值″,和作为相同单个32位值的高8位存储的″解析值″。可选地或另外地,可以在传送″计数值″和″解析值″期间使用这种组合存储模式,使得包括″计数值″和″解析值″的复本更新传送被作为单个组合值(例如上述)发送。最终,复制 存储器位置的″解析值″和″计数值″和复本存储器更新的传送的特定存储方案对本发明不重要,只要以与上述方法兼容的形式发送和/或存储这两种值。
这里使用的术语″分布式运行时刻系统″、″分布式运行时刻″或″DRT″和这种类似术语意图在其范围内捕获或包含任意应用支持系统(可以为硬件、或固件、或软件、或组合,并且可能包括代码、或数据、或操作或组合),以利于、使能够和/或支持为单个机器编写的应用程序的操作(例如为单个逻辑共享存储器机器编写的),以在具有独立本地存储器并且以复制共享存储器方案操作的多计算机系统上操作。这种DRT或其它″应用支持软件″可以具有许多形式,包含在硬件、固件、软件或其各种组合中部分或完全实现。
这里描述的方法优选在这样的应用支持系统中实现:例如在根据WO2005/103926(美国专利申请No.111/111,946代理所代码5027F-US对应的)公布的国际专利申请No.PCT/AU2005/000580中描述的DRT,然而这不是要求。可选地,以上方法的实现可以独立地、或结合其它软件、硬件、固件、或通过以上引入的说明书的任何方法中的其它方法、或通过其组合来使用起作用的或有效的应用支持系统(例如上述PCT说明书中描述的DRT)。
读者被指引到上述PCT说明书,以得到通常的分布式运行时刻系统(DRT)的完整描述、说明和示例,更具体地,上述DRT是这样一种分布式运行时刻系统,其用于修改适于在具有独立本地存储器、根据复制共享存储器方案操作的多计算机系统上操作的应用程序代码,和在具有独立本地存储器、根据复制共享存储器方案操作的这种多计算机系统上随后操作这种修改应用程序代码。
另外,读者被指引到上述PCT说明书,以得到被用于在载入期间或其它时间修改应用程序代码的各种预期方法和装置的进一步说明、例子和描述。
另外,读者被指引到上述PCT说明书,以得到可能被用于修改适于在具有独立本地存储器和根据复制共享存储器方案操作的多计算机系统上操作的应用程序代码的各种预期方法和装置的进一步说明、例子和描述。
最终,读者被指引到上述PCT说明书,以得到可以在这种复制存储 器中的一个被写入或修改时被用于操作复制共享存储器方案的复制存储器,例如复制存储器的更新的各种方法和装置的进一步说明、例子和描述。
在例如分布式共享存储器方案和更一般性的分布计算方案的可选多计算机方案中,上述方法仍然适用、有利和可用。具体地,以上方法适用于任何多计算机方案,其中复本、″类似复本″、重复、镜像、缓存或拷贝存储器位置存在,例如任何多计算机方案,其中存储器位置(单一或多个)、对象、类、库、包等等驻留在多个所连接的机器上并且优选被更新以保持一致。例如,多个机器的分布计算方案(例如分布式共享存储器方案)包括关于这种高速缓冲存储器位置的起作用的″复制存储器系统″,并且被包含在本发明的范围内,其中高速缓冲存储器位置驻留在两个或更多机器上,并且被可选地更新以保持一致。因而,可以理解上述方法应用于这种可选多计算机方案。以上所公开的方法可以被应用于这种″起作用的复制存储器系统″(例如具有高速缓存的分布式共享存储器系统)(已作必要修正)。
还假定和考虑到由可选服务器机器X(或多个可选服务器机器)执行的任何所述功能或所述操作可以由多个其它参与机器(例如图1的机器M1,M2,M3...n)中的任何一个或多于一个来执行。
可选地或组合地,还进一步假定和考虑到由可选服务器机器X(或多个可选服务器机器)执行的任何所述功能或所述操作可以由多个其它参与机器的任何一个或多个部分地执行(例如在其中分解),使得多个机器一起实现由可选服务器机器X执行的所述功能或操作。例如,由可选服务器机器X执行的所述功能或所述操作可以在多个参与机器的一个或多个中分解。
此外,可选地或组合地,还进一步预期和考虑到由可选服务器机器X(或多个可选服务器机器)执行的任何所述功能或所述操作可以由可选服务器机器X(或多个可选服务器机器)和多个其它参与机器(例如机器M1,M2,M3...n)的任何一或多个来组合执行或实现,使得多个机器和可选服务器机器一起完成由可选单个机器X执行的所述功能或所述操作。例如,由可选服务器机器X执行的所述功能或所述操作可以在一或多个可选服务器机器X和多个参与机器中的一或多个中间分解。
在实现本发明时可以使用各种记录存储和传送方案。一个这样的记录或数据存储和传送方案是使用″列表″或″表格″或其它类似数据存储结构。不考虑所使用的特定记录或数据存储和传送方案,重要的是所复制的写入存储器位置能够被识别,并且其更新值(和标识)将被发送到其它机器 (优选是写入存储器位置的本地复本驻留的机器)以便允许接收机器将所接收的更新存储器数值存储到对应的本地复本存储器位置。
因而,本发明的方法不限于任何特定所述记录或数据存储或传送方案,而是可以使用能够完成本发明的方法的任何记录或数据存储或传送方案。
具体地,参考″表格″或″列表″的所述例子,″表格″存储或传送方案的使用(和通常术语″表格″或″列表″的使用)只是说明性的,并且应理解在其范围内包含任何同等或功能等价的记录或数据存储或发送装置或方法,例如可以被用于实现本发明的方法。
这里使用的术语″对象″和″类″被从JAVA环境导出并且旨在包含从例如模块、部件、包、结构(struct)、库等等的不同环境导出的类似术语。
这里所用的术语″对象″和″类″的使用旨在包含一或多个存储器位置的任何关联。具体地,例如,术语″对象″和″类″旨在在其范围内包含多个存储器位置的任何关联,例如一组相关存储器位置(例如,包括数组数据结构的一或多个存储器位置,包括结构的一或多个存储器位置,包括一组相关变量的一或多个存储器位置,等等)。
在上面描述和附图中对JAVA的引用共同或独立地包含JAVA语言、JAVA平台、JAVA体系结构和JAVA虚拟机。另外,本发明同样适用于(已作必要修正)其它非JAVA计算机语言(例如,包含但不限于编程语言、源代码语言、中间代码语言、目标代码语言、机器代码语言、汇编代码语言,或任何其它代码语言的任何一或多个),机器(例如,包含但不限于任何一或多个虚拟机,抽象机器,真实机器等等),计算机体系结构(例如,包含但不限于真实计算机/机器体系结构,或虚拟计算机/机器体系结构,或抽象计算机/机器体系结构,或微型体系结构,或指令集体系结构等等的任何一或多个),或平台(例如,包含但不限于计算机/计算平台,或操作系统,或编程语言,或运行时刻库等等任何一或多个)。
这种编程语言的例子包含过程性编程语言,或声明性编程语言,或面向对象编程语言。这种编程语言的其它例子包含Microsoft.NET语言(例如Visual BASIC,Visual BASIC.NET,Visual C/C++,Visual C/C++.NET,C#,C#.NET,等等)、FORTRAN、C/C++、Objective C、COBOL、BASIC、Ruby、Python等等。
这种机器的例子包含JAVA虚拟机、Microsoft.NET CLR、虚拟机监 视器、管理程序、VMWare、Xen等等。
这种计算机结构的例子包含Intel公司的x86计算机体系结构和指令集体系结构,Intel公司的NetBurst微型体系结构,Intel公司的核心微型体系结构,Sun Microsystems的SPARC计算机体系结构和指令集体系结构,Sun Microsystems的UltraSPARC III微型体系结构,IBM公司的POWER计算机体系结构和指令集体系结构,IBM公司的POWER4/POWER5/POWER6微型体系结构等等。
这种平台的例子包含微软公司的Windows XP操作系统和软件平台,微软公司的Windows Vista操作系统和软件平台,Linux操作系统和软件平台,Sun Microsystem的Solaris操作系统和软件平台,IBM公司的AIX操作系统和软件平台,Sun Microsystems的JAVA平台,Microsoft.NET平台等等。
当在非JAVA语言或应用程序代码环境中实现时,所概括的平台和/或虚拟机和/或机器和/或运行时刻系统能够用该平台和/或虚拟机和/或机器和/或运行时刻系统环境的语言(例如,包含但不限于源代码语言,中间代码语言,目标代码语言,机器代码语言和任何其它代码语言的任何一或多个)操作应用代码,并且不考虑机器制造商和机器的内部细节地使用该平台和/或虚拟机和/或机器和/或运行时刻系统和/或语言体系结构。还应当理解,根据这里提供的描述,平台和/或运行时刻系统可以包含虚拟机和非虚拟机软件和/或固件体系结构,以及硬件和直接硬件编码的应用和实现。
对于更一般性的虚拟机或抽象机器环境,以及对于当前和未来计算机和/或计算机器和/或信息设备或处理系统,可以不使用或者不需要使用类和/或对象、结构、方法和计算机程序和计算机程序产品的计算机和/或计算机器和/或信息设备或处理系统仍然适用。不使用类和/或对象的计算机和/或计算机器的例子包含例如Intel公司及其它公司制造的x86计算机体系结构、Sun Microsystems公司及其它公司制造的SPARC计算机体系结构、国际商用机器公司及其它公司制造的Power PC计算机体系结构和苹果计算机公司及其它公司制造的个人计算机产品。对于这些类型的计算机、计算机器、信息设备和在其上实现的虚拟机或虚拟计算环境,不使用类或对象思路的计算机、计算机器、信息设备和在其上实现的虚拟机或虚拟计算环境可以被概括为例如包含基本数据类型(例如整数数据类型、浮点数据类型、长数据类型、双精度数据类型、串数据类型、字符数据类型 和布尔数据类型)、结构化数据类型(例如数组和记录)、导出类型或过程性语言或其它语言及环境的其它代码或数据结构,例如函数、指针、部件、模块、结构、引用和联合。
在JAVA语言中,存储器位置包含例如字段和数组数据结构的元素。以上描述涉及字段,并且数组数据结构所需的改变实质上是相同(已作必要修正)的。
本发明的任何和所有实施例能够采取许多形式和实现,包含软件实现、硬件实现、硅实现、固件实现或软件/硬件/硅/固件组合实现。
针对本发明的实施例描述各种方法和/或装置。在本发明的至少一个实施例中,这些各种装置中的任何一个或每个可以通过计算机程序代码语句或指令实现(包含通过多个计算机程序代码语句或指令实现),该计算机程序代码语句或指令在计算机逻辑电路,处理器,ASIC,微处理器,微控制器,或其它逻辑内执行修改这种逻辑或电路的操作以完成所述操作或功能。在另一个实施例中,这些各种装置中的任何一个或每个可以在固件中实现,并且在其它实施例中这可以在硬件中实现。此外,在本发明的至少一个实施例中,这些各种装置中的任何一个或每个可以通过计算机程序软件、固件和/或硬件的组合来实现。
前述方法、过程和/或例程中的任何和每个可以有利地被实现成存储在任何有形介质或以电子、信号或数字形式存在的计算机程序和/或计算机程序产品。这种计算机程序或计算机程序产品包括指令,其分别和/或组织成模块、程序、子程序,或以任何其他方式执行例如计算机、计算机器或信息设备的处理器或微处理器中的处理逻辑;计算机程序或计算机程序产品,其修改在执行其的计算机上、或在与存在或执行计算机程序或计算机程序产品的计算机耦合、连接或信号通信的计算机上执行的操作。这种计算机程序或计算机程序产品修改计算机、计算机器和/或信息设备的操作和体系结构以改变计算机的技术操作并且实现这里描述的技术效果。
为了便于描述,这里的某些或所有所指示的存储器位置可以被指示或描述为复制在每个机器上,因此,一个机器对任何复制存储器位置的复本存储器更新会被传送/发送到所有其它机器。重要的是,本发明的方法和实施例不限于全复制存储器方案,而可适用于和用于部分复制共享存储器方案(已作必要修正)(例如其中一或多个复制存储器位置只在多个机器的子集上被复制)。
所有所述本发明的实施例和方案同样适用于复制共享存储器系统,无论是否部分复制。具体地,在以复制共享存储器方案操作的全部机器的某个子集上复制某些存储器位置的部分复制共享存储器方案自身可以构成用于本发明的目的的复制共享存储器方案。
参考图22,其中在五机器复制共享存储器方案(具有其它机器M4和M5)的三个机器M1,M2和M3上复制存储器位置″A″,″B″和″C″,于是对于本发明的目的,术语复制共享存储器方案不限于所有5个机器M1-M5,而是可以涵盖操作方案中的任意更少的机器(小于机器总数),例如机器M1-M3。因而,具有复制存储器位置″A″,″B″和″C″的机器M1,M2和M3依其自身的权利构成复制共享存储器方案(没有机器M4或M5)。
通常,在本发明内描述和图解的复制共享存储器方案通常被解释为包含具有独立本地存储器的多个独立机器,例如图2和22中所述。然而,包含复制共享存储器系统的各种可选机器方案由本发明提供,并且包含在本发明的范围内。
具体地,这里用于表示根据复制共享存储器方案操作的多个这种实体的单一计算实体的术语″机器″不限于只表示单个物理机器或其它单个计算机系统。相反,这里术语″机器″的使用被理解为在其范围内涵盖和包含复制共享存储器方案的任意″复制存储器实例″(或″复制存储器映象″或″复制存储器单元″)的更广泛用法。
具体地,如这里描述的复制共享存储器方案包含多个机器,其中的每个用独立本地存储器操作。在复制共享存储器方案内的参与机器的每个这种独立本地存储器表示″独立复制存储器实例″(不管部分复制或完全复制)。即,根据复制共享存储器方案操作的多个这种机器中的每个机器的本地存储器表示和充当″独立复制存储器实例″。虽然这种″复制存储器实例″的最大公共实施例是单个物理机器的单个这种实例(包括该单个物理机器的本地存储器的某个子集或全部),然而″复制存储器实例″不局限于这种单个物理机器方案。
例如,本发明假定使用术语″机器″时在其范围内包含任意各种″虚拟机″或类似方案。在图23中指示″虚拟机″方案的一个一般性例子。这种虚拟机方案可以具有例如VMWare虚拟机实例,或Xen泛虚拟化(Paravirtualization)实例的管理程序或虚拟机监视器协助方案的形式。可选地,基本等同虚拟机方案还包含Solaris容器(Solaris Containers),隔离 软件域(Isolated Software Domains),并行操作系统实例(ParallelOperating System instances),具有独立和/或隔离和/或保护的存储器的基本上独立的应用进程或任务,或具有独立或隔离或保护的存储器的任何其他这种独立虚拟机实例或这种类似多程序方案。计算领域的技术人员熟悉各种可选″虚拟机″方案。
通过使用任意各种″虚拟机″方案,多个″虚拟机″可以驻留于或占用单个物理机器,并且仍以相对于本发明的方法和复制共享存储器方案基本上独立的方式,作为整体操作。接着,尽管实际上共享或驻留于单个公共物理机器,但实质上这种″虚拟机″作为独立物理机器出现、工作和/或操作。在图23中描述了″n″个″虚拟机″N11410的这种方案。
在图23中指示单个物理机器N1401包括硬件N11402和管理程序和/或操作系统N11403。要在机器N11401内和在管理程序/操作系统层上操作的是n个″虚拟机″N11410(即,N11410/1,N11410/2...N11410/n),其中每个具有基本上独立、隔离和/或保护的本地存储器(通常包括机器N11401)。
用于本发明的目的的每个这种″虚拟机″N11410可以具有能够作为和根据复制共享存储器方案操作的″单个机器″的单个″复制存储器实例″的形式。
当两个或更多这种″虚拟机″驻留于单个物理机器或在单个物理机器内操作时,每个这种单个″虚拟机″通常表示用于复制共享存储器方案目的的″复制存储器实例″。换言之,具有任何其他″虚拟机″的基本独立存储器的每个″虚拟机″在根据复制共享存储器方案操作的多个″复制存储器实例″的一个成员时,通常表示和充当单个″复制存储器实例″,其出于本发明的目的在这里包含的所述实施例、附图、方案、描述和方法中包括单个″机器″。
因而,本发明提供了复制共享存储器方案,并且在这种方案内应用和操作的本发明的方法可以包含多个″复制存储器实例″,其可以或可以不均对应于单个独立物理机器。例如,提供复制共享存储器方案,其中这种方案包括充当独立″复制存储器实例″的多个(例如10)虚拟机实例,其中每个虚拟机实例在一个公共、共享、物理机器内操作。
例如,可选地,提供复制共享存储器方案,其中这种方案包括根据这种方案操作的独立″复制存储器实例″的单个物理机器的某一个或多个虚 拟机实例,和未与两个或更多″复制存储器实例″一起操作的某一个或多个单个物理机器。
还提供了″虚拟机″的其它可选方案,并且包含在本发明的范围内,包含驻留于或操作于多个物理机器的方案,并且仍表示用于复制共享存储器方案的目的的单个″复制存储器实例″。
提供和考虑任意上述方法或方案的任意组合,并且包含在本发明的范围内。
在修改的所有所述实例中,其中在载入之前或期间,或甚至在载入之后但在开始执行未修改应用代码之前修改应用程序代码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)″即时″编译,或
(v)在加载之后重新编译(但是例如,在执行分布式环境中的相关或对应应用代码之前)。
通常,术语″编译″意味着代码或语言的变化,例如,从源到目标代码或从一种语言到另一种。显然,在本说明书中的术语″编译″(及其文法等价表述)的使用未被如此限制,并且也可以包含或涵盖相同代码或语言内的修改。
编程领域的技术人员知道,当其它代码或指令被插入现有代码或指令集对其修改时,现有代码或指令集可能更需要进一步修改(例如,通过重新编号连续指令),使得满足偏移、分支、属性、标记等等。
类似地,在JAVA语言中,存储器位置包含例如字段和数组类型。以上描述涉及字段,并且数组类型所需的改变实质上是相同(已作必要修正)的。本发明也同样适用于类似JAVA的编程语言(包含过程性、声明性和面向对象),其包含Microsoft.NET平台和体系结构(Visual Basic,VisualC/C++和C#),FORTRAN,C/C++,COBOL,BASIC等等。
这里使用的术语对象和类被从JAVA环境导出,并且旨在涵盖从例如动态链接库(DLL),或目标代码包,或功能单元或存储器位置的不同环境导出的类似术语。
针对本发明的实施例描述了各种装置,包含例如但不限于存储器更新装置和/或存储器复制装置,分布式运行时刻装置,修改器或修改装置等等。这些各种装置中的任何一个或每个可以通过计算机程序代码语句或指令实现(可包含通过多个计算机程序代码语句或指令实现),该计算机程序代码语句或指令在计算机逻辑电路,处理器,ASIC,微处理器,微控制器,或其它逻辑内执行修改这种逻辑或电路的操作以完成所述操作或功能。在另一个方案中,这些各种装置中的任何一个或每个可以在固件和/或硬件中实现。此外,这些各种装置中的任何一个或每个可以通过计算机程序软件、固件和/或硬件的组合来实现。
前述方法、过程和/或例程中的任何和每个可以有利地被实现成存储在任何有形介质或以电子、信号或数字形式存在的计算机程序和/或计算机程序产品。这种计算机程序或计算机程序产品包括指令,其分别和/或组织成模块、程序、子程序,或以任何其他方式执行例如计算机、计算机器或信息设备的处理器或微处理器中的处理逻辑;计算机程序或计算机程序产品,其修改在执行其的计算机上、或在与存在或执行计算机程序或计算机程序产品的计算机耦合、连接或信号通信的计算机上执行的操作。这种计算机程序或计算机程序产品修改计算机、计算机器和/或信息设备的操作和体系结构以改变计算机的技术操作并且实现这里描述的技术效果。
因此,本发明由包括存储在存储介质中或以任何形式电子存在的一组程序指令构成,并且可以允许多个计算机执行如这里描述的、任何权利要求中包含的任何方法、过程、例程等等。
此外,本发明包含通过通信网络或其它通信链路或路径互连的多个计算机,并且均可以基本上同时或并行地执行被编写成只在对应不同一个计算机的单个计算机上操作的应用程序代码的相同或不同部分。计算机被编程为在加载计算机程序产品或随后指令时,执行说明书中描述的或在权利要求书中提出的任何方法、过程或例程。类似地,本发明在其范围内也包含用于配合同样、或基本上类似的计算机以形成多计算机系统的单个计算机。
为了总结,公开了一种在通过借以发送存储器更新消息的通信链路互接的至少两个物理位置中的每个处更新至少一个存储器位置的内容的方法,所述方法包括步骤:
(i)使验证数据与每个存储器更新消息关联,所述验证数据使得物理位置能够被更新以验证所述更新消息。
优选地所述验证数据包括指示更新消息序列中对应消息的位置的计数值。
优选地所述验证数据还包括指示所述更新消息的源的解析计数。
优选地,该方法包含另一个步骤:
(ii)不时地复位所述计数值。
优选地,该方法包含另一个步骤:
(iii)针对来自同一源的相继的消息递增或递减所述计数值。
优选地,该方法包含另一个步骤:
(iv)分别将所述计数值递增或递减一。
优选地,该方法包含另一个步骤:
(v)在可能导致产生回声更新消息的环境中,分别将所述计数值递增或递减多于一的值。
也公开了一种多计算机系统,其适于执行上述方法,该系统的每个计算机包括物理位置之一。
还公开了一种适于与其它计算机通信以形成上述多计算机系统的单个计算机。
也公开了一种计算机程序产品,其在加载到计算机时使得计算机执行上述方法。
此外,公开了一种在通过借以发送存储器更新消息的通信链路互接的至少两个物理位置中的每个处更新至少一个存储器位置的内容的系统,其中每个所述存储器更新消息具有与之相关的验证数据,所述验证数据使得物理位置能够被更新以验证所述更新消息。
优选地所述验证数据包括指示更新消息序列中的对应消息的位置的计数值。
优选地所述验证数据还包括指示所述更新消息的源的解析计数。
优选地,该方法包含不时地复位所述计数值的复位装置。
优选地该方法包含针对来自同一源的相继的消息递增或递减所述计数值的计数装置。
优选地所述计数装置分别将所述计数值递增或递减一。
优选地在可能导致产生回声更新消息的环境中,所述计数装置分别将所述计数值递增或递减多于一的值。
为了总结,公开了一种检测被寻址的存储器的更新中的竞争的方法,其中能够基本上同时地从多个源更新具有特定位置标识符的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示在所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新,
(ii)针对每个接收存储器位置存储先前所接收的更新的更新计数,
(iii)比较当前驻留在接收存储器位置的更新计数和任何当前所接收的更新信号或分组的更新计数,和
(iv)在所比较的更新计数相同的情况下指示竞争情形。
优选地,该方法包含另一个步骤:
(v)在本地更新更新源的每个时机,递增更新源的驻留更新计数。
优选地,该方法包含另一个步骤:
(vi)将所述更新源驻留更新计数递增一。
优选地,所述存储器位置是在多个计算机之一中驻留的多个存储器位置之一,并且所述多个计算机的每个具有基本上相同的存储器位置结构。
优选地,一个所述计算机中的每个所述可更新存储器位置在每个其它所述计算机中具有对应的存储器位置。
优选地,每个所述可更新存储器位置具有不同于所述位置标识符的本地存储器地址。
也公开了一种检测被寻址的存储器的更新中的竞争的系统,所述系统包括具有特定位置标识符的至少一个存储器位置;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新;与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数;比较 装置,其比较先前存储的更新计数和任何当前所接收的更新信号或分组的更新计数;和与所述比较装置连接的竞争指示装置,用于在所比较的更新计数相同的情况下指示竞争情形。
优选地,该方法包含递增装置,以在本地更新更新源的每个时机,递增更新源的驻留更新计数。
优选地,所述递增装置将所述驻留更新计数递增一。
优选地,所述存储器位置是在多个计算机之一中驻留的多个存储器位置之一,并且所述多个计算机的每个具有基本上相同的存储器位置结构。
优选地,一个所述计算机中的每个所述可更新存储器位置在每个其它所述计算机中具有对应存储器位置。
优选地,每个所述可更新存储器位置具有不同于所述位置标识符的本地存储器地址。
另外,也公开了一种在包括多个计算机的多计算机系统中检测复本存储器更新中的竞争的方法,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,在所述方法中能够基本上同时从多个源更新具有特定位置标识符和在至少两个所述计算机上被复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,
(ii)针对每个复制的存储器位置存储先前发送或接收的更新的更新计数,
(iii)比较与要更新的复制存储器位置相关的驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)在所比较的更新计数相同的情况下指示竞争情形。
此外,也公开一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和检测复本存储器更新中的竞争的检测 装置,所述检测装置包括:至少一个存储器位置,其具有特定位置标识符,在至少两个机器上被复制,并且在机器修改其复本值时被更新以保持基本相似;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新;与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数;比较装置,用于比较先前存储的更新计数和当前所接收的更新信号或分组的更新计数;和与所述比较装置连接的竞争指示装置,用于在所比较的更新计数相同的情况下指示竞争情形。
此外,也公开了一种在包括多个计算机的多计算机系统中的复本存储器更新的方法,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,在所述方法中能够基本上同时从多个源更新具有特定位置标识符和在至少两个所述计算机上被复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,
(ii)针对每个复制的存储器位置存储先前发送或接收的更新的更新计数,
(iii)比较与要更新的复制存储器位置相关的当前驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数大于当前驻留更新计数,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,或
(v)如果当前所接收的更新计数小于当前驻留更新计数,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,或
(vi)如果当前所接收的更新计数等于当前驻留更新计数,则指示竞争情形。
此外,公开了一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和用于复本存储器更新的更新装置,所述更新装置包括:至少一个存储器位置,其具有特定位置标识符,在至少两个计算机上被复制,并且在机器修改其复本值时被更新以保持基本相似;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新;与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数;比较装置,其比较当前所接收的更新计数值和当前驻留更新计数值,并且如果当前所接收的更新计数超过当前驻留更新计数,则用当前所接收的数据内容改写相关复制存储器位置和用当前所接收的更新计数改写当前驻留更新计数,而如果当前所接收的更新计数小于当前驻留更新计数,则不用当前所接收的数据内容改写相关复制存储器位置并且不用当前所接收的更新计数改写当前驻留更新计数;和与所述比较装置连接的竞争指示装置,用于在所比较的更新计数相同的情况下指示竞争情形。计数比较装置优选是比较器。
另外,也公开了一种在用于与多计算机系统中至少一个其它计算机协作的单个计算机中的复本存储器更新的方法,其中所述多计算机系统包括多个计算机,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,在所述方法中能够基本上同时从多个源更新具有特定位置标识符并且在至少两个计算机上被复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,
(ii)针对每个复制的存储器位置存储先前发送或接收的更新的更新计数,
(iii)比较与要更新的复制存储器位置相关的当前驻留更新计数和当前 所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数大于当前驻留更新计数,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,或
(v)如果当前所接收的更新计数小于当前驻留更新计数,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,或
(vi)如果当前所接收的更新计数等于当前驻留更新计数,则指示竞争情形。
此外公开了通过上面定义的方法更新的所存储的数据。
也公开了一种单个计算机,其适于与至少一个其它计算机通信以形成多计算机系统并且用于执行上述方法。
类似地公开了一种计算机程序产品,其在加载到计算机时使得计算机执行上述方法。
为了总结,公开了一种解决被寻址的存储器的更新中的竞争的方法,其中能够基本上同时从多个源更新具有特定位置标识符的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示在所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新,
(ii)针对每个接收存储器位置,存储先前所接收的更新的更新计数,
(iii)比较当前驻留在接收存储器位置的更新计数和任何当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数大于当前驻留更新计数,则不针对传入信号或分组采取行动,或
(v)如果当前所接收的更新计数小于当前驻留更新计数,则针对传入信号或分组采取行动,或
(vi)如果当前所接收的更新计数等于当前驻留更新计数,则开始竞争解决。
优选地针对传入信号或分组采取行动包含步骤:用传入信号或分组的内容替换特定存储器位置的内容,并且用传入信号或分组的更新计数替换当前驻留更新计数。
优选地所述开始的竞争解决过程基本上与时间无关。
优选地所述竞争解决过程包括步骤:
(vii)确定每个更新源的标识,所述更新源被指定层次顺序,和
(viii)从所述源接受在所述层次顺序方面具有较高等级的更新信号或分组。
优选地所述竞争解决过程包括步骤:
(ix)确定每个更新源的标识,所述更新源被指定层次顺序,和
(x)从所述源接受在所述层次顺序方面具有较低等级的更新信号或分组。
优选地所述竞争解决过程包括步骤:
(xi)向每个更新源分配基本上随机的数,和
(xii)从所述源接受具有较高随机数的更新信号或分组。
优选地所述竞争解决过程包括步骤:
(xiii)向每个更新源分配基本上随机的数,和
(xiv)从所述源接受具有较低随机数的更新信号或分组。
也公开了一种检测被寻址的存储器的更新中的竞争的系统,所述系统包括具有特定位置标识符的至少一个存储器位置;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新;与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数;比较装置,其比较先前存储的更新计数和任何当前所接收的更新信号或分组的更新计数;竞争指示装置,其与所述比较装置连接并且用于在所比较的更新计数相同的情况下指示竞争情形,在所述比较指示当前所接收的更新计数大于当前驻留更新计数的情况下不针对当前所接收的更新信号或分组采取行动,或在所述比较指示当前所接收的更新计数小于当前驻留更新计 数的情况下针对当前所接收的更新信号或分组采取行动;和与所述竞争指示装置连接的竞争解决装置,其开始竞争解决过程。
优选地所述竞争指示装置包含改写装置,其针对当前所接收的更新信号或分组采取行动以用传入信号或分组的内容替换特定存储器位置的内容,并且用传入信号或分组的更新计数替换当前驻留更新计数。
优选地所述竞争解决装置的操作基本上与时间无关。
优选地所述竞争解决装置包含比较器装置,为每个所述更新源指定指示数,所述比较器装置比较最近的更新源的指示数和被指示有竞争的当前更新的源的指示数,并且仅在比较为肯定的情况下针对当前所接收的更新信号或分组采取行动。
优选地,所述竞争解决装置包含比较器装置,为每个所述更新源指定指示数,所述比较器装置比较最近的更新源的指示数和被指示有竞争的当前更新的源的指示数,并且仅在比较为否定的情况下针对当前所接收的更新信号或分组采取行动。
优选地所述指示数表示在计算机层次结构中计算机的编号。
优选地所述指示数是基本上随机的数。
优选地,所述存储器位置是多个计算机之一中驻留的多个存储器位置之一,并且所述多个计算机的每个具有基本上相同存储器位置结构。
优选地,所述计算机之一中的每个所述可更新存储器位置在每个其它所述计算机中具有对应存储器位置。
优选地,每个所述可更新存储器位置具有不同于所述位置标识符的本地存储器地址。
此外,公开了一种解决多计算机系统的复本存储器更新中的竞争的方法,其中多计算机系统包括:多个计算机,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,在所述方法中能够基本上同时从多个源更新具有特定位置标识符的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的复制存储器位置的特定标识符、要用来更新所述复制存储器位置的内容、与复制存储器位置相关的更新源的驻留更新计数,所述计数包括指示所述更 新源被更新的时机的顺序的数,所述时机包含当前更新,和与复制存储器位置相关的更新源的驻留和解析值,所述解析值包括更新源的唯一值,
(ii)针对每个接收存储器位置,存储先前所接收的更新的更新计数和解析值,
(iii)比较当前驻留在接收存储器位置的更新计数和任何当前所接收的更新信号或分组的更新计数,和
(iv)如果与要更新的复制存储器位置相关的当前所接收的更新计数等于当前驻留更新计数,则不针对传入信号或分组采取行动,或
(v)如果当前所接收的更新计数小于当前驻留更新计数,则针对传入信号或分组采取行动,或
(vi)如果当前所接收的更新计数等于当前驻留更新计数,则比较与要更新的复制存储器位置相关的当前驻留解析值与当前所接收的更新信号或分组的更新解析值,和
(vii)如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或
(viii)如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
此外,公开了一种解决多计算机系统的复本存储器更新中的竞争的系统,其中多计算机系统包括多个计算机,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,所述系统包括具有特定位置标识符的至少一个存储器位置;多个源,其中每个源能够更新所述复制存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的复制存储器位置的特定标识符、要用来更新所述复制存储器位置的内容和与复制存储器位置相关的更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和与复制存储器位置相关的更新源的解析值,所述解析值包括更新源的唯一值;与每个所述复制存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数和解析值;比较装 置,用于比较与要更新的复制存储器位置相关的先前所存储的更新计数和当前所接收的更新信号或分组的更新计数;竞争指示装置,其与所述比较装置连接并且用于在所比较的更新计数相同的情况下指示竞争情形;与所述竞争指示装置连接的竞争解决装置,用于开始竞争解决过程,其中所述解析过程包括:比较与要更新的复制存储器位置相关的当前驻留解析值和当前所接收的更新信号或分组的更新解析值,并且如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
此外,公开了一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和一种解决复本存储器更新中的竞争的方法,在所述方法中能够基本上同时从多个源更新具有特定位置标识符并且在至少两个计算机上被复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容、更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和更新源的解析值,所述解析值包括更新源的唯一值,
(ii)针对每个复制的存储器位置,存储先前发送或接收的更新的更新计数和解析值,
(iii)比较与要更新的复制存储器位置相关的当前驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数等于当前驻留更新计数,则比较与要更新的复制存储器位置相关的当前驻留解析值与当前所接收的更新信号或分组的更新解析值,和
(v)如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写 当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或
(vi)如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
此外,也公开一种包括多个计算机的多计算机系统,其中每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和一种解决复本存储器更新的竞争的系统,所述系统包括:至少一个存储器位置,其具有特定位置标识符,在至少两个计算机上被复制,并且在机器修改其复本值时被更新以保持基本相似;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容和更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和更新源的解析值,所述解析值包括更新源的唯一值;与每个所述复制存储器位置相关的存储装置,其中存储先前所发送或接收的更新的更新计数和解析值;比较装置,其比较与要更新的复制存储器位置相关的当前所接收的更新计数值和当前驻留更新计数值,并且如果所比较的更新计数相同,则比较与要更新的复制存储器位置相关的当前驻留解析值和当前所接收的更新信号或分组的更新解析值,并且如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
优选地计数比较和解析比较装置是比较器。
最终,公开了一种用于与多计算机系统中至少一个其它计算机协作的单个计算机,其中所述多计算机系统包括多个计算机,每个计算机通过至少一个通信网络互连,并且均执行被编写成在单个计算机上执行的应用程序的不同部分,均具有独立本地存储器,其中至少一个存储器位置在每个所述本地存储器中被复制,和一种解决复本存储器更新中的竞争的方法, 其中能够基本上同时从多个源更新具有特定位置标识符并且在至少两个计算机上复制的存储器位置,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的存储器位置的特定标识符、要用来更新所述存储器位置的内容、更新源的驻留更新计数,所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和更新源的解析值,所述解析值包括更新源的唯一值,
(ii)针对每个复制的存储器位置,存储先前发送或接收的更新的更新计数和解析值,
(iii)比较与要更新的复制存储器位置相关的当前驻留更新计数和当前所接收的更新信号或分组的更新计数,和
(iv)如果当前所接收的更新计数等于当前驻留更新计数,则比较与要更新的复制存储器位置相关的当前驻留解析值与当前所接收的更新信号或分组的更新解析值,和
(v)如果当前所接收的解析值大于当前驻留解析值,则用当前所接收的数据内容改写相关复制存储器位置,并且用当前所接收的更新计数改写当前驻留更新计数,并且用当前所接收的解析值改写当前驻留解析值,或
(vi)如果当前所接收的解析值小于当前驻留解析值,则不用当前所接收的数据内容改写相关复制存储器位置,并且不用当前所接收的更新计数改写当前驻留更新计数,并且不用当前所接收的解析值改写当前驻留解析值。
还公开了一种适于与其它计算机通信以形成任何一个上述多计算机系统。
另外,公开了一种单个计算机,其适于与其它计算机通信以形成多计算机系统并且执行冲突解决的任何一个上述方法。
此外,仍公开了一种计算机程序产品,执行任何一个上述方法或形成任何一个上述多计算机系统。
此外,也公开了根据上述方法更新的所存储数据。
为了总结,公开了一种在互连多个计算机的通信网络上广播存储器更新信号或分组的方法,其中每个所述计算机具有被寻址的存储器位置,每个被寻址的存储器位置具有特定位置标识符并且能够基本上同时从多个 源被更新,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式化,所述格式化包括要更新的每个存储器位置的特定标识符、要用来更新所述每个存储器位置的内容和更新源的至少一个驻留更新计数,每个所述计数包括指示所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新,和
(ii)在每个所述应用执行计算机接收所述广播更新信号或分组之后,在每个指定存储器位置处将对应更新内容和所述更新计数存储在每个所述计算机的本地存储器中。
优选地更新计数的数目等于要更新的存储器位置的数目。
优选地更新计数的数目等于一。
优选地从由所述广播信号或分组中包含的每个更新存储器位置的更新计数所构成的组中选择单个更新计数。
优选地所述单个更新计数是所述组中最高量值的计数。
优选地每个所述存储器位置是所述多个计算机之一中驻留的多个存储器位置之一,并且所述多个计算机的每个具有基本上相同的存储器位置结构。
优选地,在所述计算机之一中的每个所述可更新存储器位置在每个其它所述计算机中具有对应存储器位置。
优选地,每个所述可更新存储器位置具有不同于所述位置标识符的本地存储器地址。
优选地所述多个计算机的每个执行被编写成在单个计算机上执行的单个应用程序的不同部分。
也公开了一种系统,用于在互连多个计算机的通信网络上广播被寻址的存储器的更新信号或分组,所述系统包括每个所述计算机中具有特定位置标识符的至少一个存储器位置;多个源,其中每个源能够更新所述存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的每个存储器位置的特定标识符、要用来更新所述每个存储器位置的内容和更新源的至少一个驻留更新计数,每个所述计数包括指示在所述更新源被更新的时机序列中更新消息的位置的数,所述时机包含当前更新;和与每个所述存储器位置相关的存储装置,其中存储先前所接收的更新的更新计数。
优选地系统还包括递增装置,该递增装置在本地更新更新源的每个时机递增更新源的驻留更新计数。
优选地,所述递增装置将所述驻留更新计数递增一。
优选地,所述存储器位置是多个计算机之一中驻留的多个存储器位置之一,并且所述多个计算机的每个具有基本上相同的存储器位置结构。
优选地,所述计算机之一中的每个所述可更新存储器位置在每个其它所述计算机中具有对应存储器位置。
优选地,每个所述可更新存储器位置具有不同于所述位置标识符的本地存储器地址。
另外,公开了一种在互连多个计算机的通信网络上广播存储器更新信号或分组的方法,其中每个计算机均执行被编写成在单个计算机上执行的应用程序的不同部分,并且均具有独立本地存储器,其中至少一个被寻址的存储器位置在每个所述本地存储器中被复制,每个存储器位置具有特定位置标识符并且能够基本上同时从多个源被更新,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的每个存储器位置的特定标识符、要用来更新所述每个存储器位置的内容和更新源的至少一个更新计数,每个所述计数包括指示所述更新源被更新的时机的顺序的数,所述时机包含当前更新,和更新源的至少一个解析值,每个所述解析值包括更新源的唯一值。
此外,公开了一种在互连多个计算机的通信网络上广播被寻址的存储器的更新信号或分组的系统,每个所述计算机执行被编写成在单个计算机上执行的应用程序的不同部分,并且均具有独立本地存储器,其中至少一个,所述系统包括每个所述计算机中具有特定位置标识符、在每个所述本地存储器中被复制的至少一个复制存储器位置;多个源,其中每个源能够更新所述复制存储器位置并且对执行更新的信号或分组使用更新格式,所述格式包括要更新的每个复制存储器位置的特定标识符、要用来更新所述每个复制存储器位置的内容和更新源的至少一个更新计数,每个所述计数包括所述更新源被更新的时机的顺序的数,所述时机包含当前更新;和更新源的至少一个解析值,每个所述解析值包括更新源的唯一值。
类似地,公开了一种在互连多个计算机的通信网络上广播存储器更新信号或分组的方法,其中每个计算机均执行被编写成在单个计算机上执行的应用程序的不同部分,并且均具有独立本地存储器,其中至少一个被寻 址的存储器位置在每个所述本地存储器中被复制,每个存储器位置具有特定位置标识符并且能够基本上同时从多个源被更新,所述方法包括步骤:
(i)对执行更新的信号或分组使用更新格式,所述格式包括要更新的至少两个复制存储器位置的特定标识符、要用来更新所述每个复制存储器位置的内容和针对所有所述复制存储器位置的更新源的更新计数,所述计数包括指示所有所述复制存储器位置被更新的时机的最高量值顺序的数,所述时机包含当前更新,和更新源的至少一个解析值,所述解析值包括更新源的唯一值。
也公开了通过上述方法更新的所存储数据。
此外,公开了一种适于与其它计算机通信以形成上述多计算机系统或系统的单个计算机。
此外,公开了一种适于执行上述方法或形成上述多计算机系统或系统的计算机程序产品。
为了总结,公开了一种在用于检测和/或解决被寻址的存储器的更新中的竞争的系统中进行数据整理的方法,其中能够基本上同时从多个源更新具有特定地址或标识符的存储器位置,所述方法包括步骤:
(i)使用更新信号/分组格式,其包括要更新的存储器位置的特定地址、要用来更新所述存储器位置的内容和指示更新所述存储器位置的时机的累积数目的更新计数,其中所述时机包含当前更新。
(ii)针对每个所述存储器位置,存储先前所接收的更新的更新计数。
(iii)不时地在预定条件出现时整理所存储的更新计数。
优选地该方法包含另一个步骤:
(iv)通过将所有所述更新计数复位到预定数目来重新初始化所述系统。
优选地该方法包含步骤:
(v)将所述预定数目设置为零。
优选地所述预定条件包括在预定时间段内不存在任何更新信号/分组。
优选地所述预定条件包括可用空闲存储器空间低于预定阈值。
优选地所述预定条件包括与所述存储器位置相关的中央处理单元的 活动低于预定阈值。
优选地该方法包含另一个步骤:
(vi)通过缩减所存储的更新计数的位数来整理该更新计数。
优选地该方法包含另一个步骤:
(vii)将所述所存储的更新计数的位数缩减到一位。
优选地该方法包含另一个步骤:
(viii)在接收下一个更新信号/分组时,扩充所述缩减的所存储的更新计数。
优选地该方法包含另一个步骤:
(ix)通过删除所述所存储的更新计数来整理所述所存储的更新计数。
优选地该方法包含另一个步骤:
(x)在写入存储器和向其它机器传送新存储器值的下一个时机重新产生更新计数,和
(xi)在接收下一个更新信号/分组重新产生所存储的更新计数并且将重新产生的计数设置为等于所接收的消息的计数。
优选地该方法包含另一个步骤:
(xii)将重新产生的更新计数设置为一。
优选地该方法包含步骤:
(xiii)针对每个所述更新信号/分组格式,为每个要更新的存储器位置提供更新计数。
优选地该方法包含步骤:
(xiv)针对要更新的多个存储器位置,基本上同时形成组更新信号,其包括要更新的所有所述存储器位置、每个要更新的所述存储器位置的内容或值和所有要更新的所述存储器位置的单个更新计数。
另外,也公开了一种进行数据整理以允许检测和/或解决竞争的系统,在被寻址的存储器中,能够基本上同时从多个源更新均具有特定地址或标识符的存储器位置,所述系统包括:数据存储设备,其包括要更新的每个存储器位置的特定地址、针对每个所述地址的由任何所接收的更新内容改写的内容和指示每个所述存储器位置被更新的时机的累积数目的更新计 数,其中所述时机包含任何当前更新;和整理装置,其连接到所述数据存储设备以不时地在预定条件出现时整理所存储的更新计数。
优选地所述整理装置包含将所有所述更新计数复位为预定数的重新初始化装置。
优选地所述预定数为零。
优选地所述整理装置预定条件包括在预定时间段不存在任何更新信号/分组。
优选地所述整理装置预定条件包括所述数据存储设备内的可用空闲存储器空间低于预定阈值。
优选地所述整理装置预定条件包括与所述存储器位置相关的中央处理单元的活动低于预定阈值。
优选地所述整理装置通过缩减每个所述存储的更新计数的位数来整理每个所述存储的更新计数。
优选地降低的位数包括一个位。
优选所述整理装置在接收更新信号/分组时扩充所述缩减的所存储的更新计数。
优选所述整理装置通过删除每个所述存储的更新计数来整理每个所述存储的更新计数。
优选所述整理装置在接收包含传入更新计数的更新信号/分组时重新产生所存储的更新计数并且将所存储的更新计数设置成等于所述传入更新计数。
优选所述整理装置在接收更新信号/分组时重新产生所述存储更新计数并且将所存储的更新计数设置为一。
优选任何更新信号/分组的格式为每个要更新的存储器位置提供更新计数。
优选任何更新信号/分组的格式包含同时更新一组所述存储器位置的数据,并且所述更新信号/分组包含针对所有要更新的所述存储器位置的单个更新计数。
也公开了一种在检测和/或解决被寻址的存储器的更新中的竞争的多计算机系统中进行数据整理的方法,其中能够基本上同时从多个源更新 具有特定地址或标识符的复制应用存储器位置/内容,每个所述计算机包括独立本地存储器并且均执行被编写成仅在单个计算机上操作的应用程序的一部分,所述方法包括步骤:
(i)使用更新信号/分组格式,其包括要更新的复制应用存储器位置/内容的特定地址、要用来更新所述存储器位置的内容和指示更新所述存储器位置的时机的累积数目的更新计数(″计数值″),其中所述时机包含当前更新。
(ii)针对每个所述存储器位置,存储先前所接收的更新的更新计数。
(iii)不时地在预定条件出现时整理或删除所存储的更新计数。
此外公开了一种多计算机系统,每个所述计算机包括独立本地存储器并且均执行被编写成仅在单个计算机上操作的相同应用程序的部分,和一种用于进行数据整理以允许检测和/或解决竞争的系统,在被寻址的存储器中,能够基本上同时从多个源更新均具有特定地址或标识符的复制应用存储器位置/内容,所述系统包括:数据存储设备,其包括要更新的每个复制应用存储器位置/内容的特定地址,针对每个所述地址的、由任何所接收的更新内容改写的内容,和指示更新每个所述存储器位置的时机的累积数目的更新计数(″计数值″),其中所述时机包含任何当前更新;和整理或删除装置,其连接到所述数据存储设备以不时地在出现预定条件时整理所存储的更新计数。
通过上述方法更新的所存储数据。
一种适于与其它计算机通信以形成上述多计算机系统或系统的单个计算机。
一种适于执行上述方法或形成上述多计算机系统或系统的计算机程序产品。
为了总结,公开了一种通过使用计数值表示更新消息序列中更新消息的位置来保证数据更新系统的正确操作的方法,所述方法包括步骤:
(i)停止更新消息的流动,和
(ii)在所述停止期间复位所述计数值。
优选所述停止由所述计数值接近预定量值而启动。
优选所述预定量值由可能算术溢出确定。
优选所述停止在预定时间之后启动。
优选所述停止在没有预定消息活动时启动。
优选所述计数值被复位为零。
也公开了一种多存储器系统,其中在至少两个物理位置的每个处的至少一个存储器位置由其上设置存储器更新消息的通信链路连接,其中计数值与每个所述发送的消息相关,以表示所述消息在发送消息序列中的位置,并且其中所述消息的发送被暂时停止以复位计数值。
优选所述停止由所述计数值接近预定量值而启动。
优选所述预定量值由可能算术溢出确定。
优选所述停止在预定时间之后启动。
优选所述停止在没有预定消息活动时启动。
优选所述计数值被复位为零。
优选该系统包括多计算机系统。
此外,公开了一种适于形成上述多计算机系统或系统的一个计算机的单个计算机。
此外,公开了一种保证多计算机系统中存储更新计数的有限计数器的正确操作的方法,每个所述计算机包括独立本地存储器并且均操作被编写成仅在单个计算机上操作的应用程序,以及至少一个应用存储器位置/内容,其在每个所述独立存储器中被复制并且被更新以保持基本相似,所述方法包括步骤:
(i)当所述更新计数值达到阈值时,复位或重新初始化每个所述计算机的所述更新计数值。
此外,公开了一种保证多计算机系统中存储更新计数值的有限计数器的正确操作的方法,每个所述计算机包括独立本地存储器并且均操作被编写成仅在单个计算机上操作的应用程序,以及至少一个应用存储器位置/内容,其在每个所述独立存储器中被复制并且被更新以保持基本相似,所述方法包括步骤:
(i)当相关的所述更新计数值达到阈值或预定时间间隔结束时,停止所复制的应用存储器位置/内容的复本更新传送,
(ii)在每个所述计算机上复位或重新初始化所述更新计数值,
(iii)恢复先前停止的复本更新传输。
另外,公开了一种单个计算机,其适于与其它计算机通信以形成一个多计算机系统或多个系统并且用于执行上述方法。
也公开了一种计算机程序产品,其在加载到计算机时使得计算机执行上述方法。
另外,公开了通过上述方法更新的所存储数据。
为了总结,公开了一种克服存储器系统中的存储器更新回声的方法,在所述存储器系统中至少一个存储器位置在不同存储器存储处被复制并且能够基本上同时从若干源更新,每个源发送更新消息,更新消息包含位置的地址、位置的新内容和指示更新消息序列中更新消息的位置的更新计数,将所述更新计数递增预定数以指示连续更新消息,所述方法包括步骤:
(i)确定最后针对特定存储器位置进行发送的源,和
(ii)在相同源要针对相同存储器位置进行顺序发送的情况下,将第二传送的所述更新计数递增超过所述预定数的数。
优选所述预定数为一。
优选所述更新计数在步骤(ii)被递增二。
优选所述存储器系统包括执行单个应用程序的多计算机系统中的复制存储器位置,所述单个应用程序被编写成在单个计算机上操作,但是所述单个应用程序的不同部分均在所述多个计算机的不同计算机上执行。
另外,公开了一种具有存储器更新回声拒绝的复制存储器系统,所述系统包括至少一个存储器位置,其在不同存储器存储处被复制并且能够基本上同时从若干源更新,其中每个源发送更新消息,所述更新消息包含所述位置的地址、所述位置的新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被增加预定数以指示连续更新消息,其中所述系统确定哪个源最后发送,并且在相同源要针对相同存储器位置进行顺序发送的情况下,将第二传送的所述更新计数递增超过所述预定数的数。
优选所述预定数为一。
优选针对相同源相同存储器顺序传送的更新计数递增量为二。
优选存储器系统包括包括执行单个应用程序的多计算机系统的复制存储器系统,所述单个应用程序被编写成在单个计算机上操作,但是所述 单个应用程序的不同部分均在所述多个计算机的不同计算机上执行。
此外,公开了一种多计算机系统,每个所述计算机包括独立本地存储器并且每个所述计算机操作被编写成在单个计算机上操作的应用程序的部分,和一种克服存储器系统中的存储器更新回声的方法,在所述存储器系统中至少一个应用存储器位置在每个所述独立本地存储器中被复制和更新以保持基本相似,每个源发送更新消息,所述更新消息包含复制应用存储器位置/内容的地址或标识、复制应用存储器位置的相关新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被递增预定数以指示连续更新消息,所述方法包括步骤:
(i)确定最后针对特定存储器位置进行发送的源,和
(ii)在相同源要针对相同存储器位置进行顺序发送的情况下,将第二传送的所述更新计数递增超过所述预定数的数。
此外,公开了一种具有存储器更新回声拒绝的复制存储器系统,所述系统包括至少一个应用存储器位置/内容,其在不同存储器存储处被复制并且能够基本上同时从若干源更新,其中每个源发送更新消息,所述更新消息包含复制应用存储器位置/内容的地址或标识、复制应用存储器位置的相关新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被增加预定数以指示连续更新消息,其中所述系统确定哪个源最后发送,并且在相同源要针对相同应用存储器位置/内容进行顺序发送的情况下,将第二传送的所述更新计数递增超过所述预定数的数。
另外,公开了一种多计算机系统,每个所述计算机包括独立本地存储器并且每个所述计算机操作被编写成在单个计算机上操作的应用程序的部分,和一种克服存储器系统中的存储器更新回声的方法,在所述存储器系统中至少一个应用存储器位置在每个所述独立本地存储器中被复制和更新以保持基本相似,每个源发送更新消息,所述更新消息包含所复制的应用存储器位置/内容的地址或标识、复制应用存储器位置的相关新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被递增预定数以指示连续更新消息,所述方法包括步骤:
(i)在接收机器上在接收到针对相同复制应用存储器位置/内容的复本存储器更新传输时禁止任何被提醒或被调度但尚未发送的复本存储器更新。
此外,公开了一种具有存储器更新回声拒绝的复制存储器系统,所述 系统包括至少一个应用存储器位置/内容,其在不同存储器存储处被复制并且能够基本上同时从若干源更新,每个源发送更新消息,所述更新消息包含复制应用存储器位置/内容的地址或标识、复制应用存储器位置的相关新内容和指示更新消息序列中更新消息的位置的更新计数,所述更新计数被增加预定数以指示连续更新消息,其中所述系统当接收机器接收到复本存储器更新传输时,确定在所述接收机器上是否存在任何被提醒或被调度但尚未发送的针对相同复制应用存储器位置/内容的复本存储器更新,并且如果存在的话,禁止或取消接收机器的所述被提醒或被调度的复本存储器更新。
此外,公开了一种单个计算机,其适于与其它计算机通信以形成一个多计算机系统并且用于执行上述方法。
另外,公开了一种计算机程序产品,其在加载到计算机时使得计算机执行上述方法。
也公开了通过上述方法更新的所存储数据。
这里所使用的术语″包括″(和其语法变化)被用于″包含″或″具有″的包含意义中并且不在″只包括″的专用意义中。
Claims (8)
1.一种在通过借以发送存储器更新消息的通信链路互接的至少两个物理位置中的每个处更新至少一个存储器位置的内容的方法,所述方法包括步骤:
(i)使验证数据与每个存储器更新消息关联,所述验证数据使得物理位置能够被更新以验证所述更新消息,
其中所述验证数据包括表示更新消息序列中对应消息的位置的计数值,
其中所述验证数据还包括指示所述更新消息的源的解析计数,
(ii)在所述更新消息的验证之后,更新所述至少一个存储器位置的内容,以及
(iii)不时地停止所述更新并复位所述计数值以防止算术溢出。
2.如权利要求1所述的方法,还包括步骤:
(iv)针对来自同一源的相继的消息递增或递减所述计数值。
3.如权利要求2所述的方法,还包括步骤:
(v)分别将所述计数值递增或递减一。
4.如权利要求2所述的方法,还包括步骤:
(vi)在可能导致产生回声更新消息的环境中,分别将所述计数值递增或递减多于一的值。
5.一种在通过借以发送存储器更新消息的通信链路互接的至少两个物理位置中的每个处更新至少一个存储器位置的内容的系统,所述系统包括:
用于使验证数据与每个存储器更新消息关联的装置,所述验证数据使得物理位置能够被更新以验证所述更新消息,
其中所述验证数据包括表示更新消息序列中对应消息的位置的计数值,
其中所述验证数据还包括指示所述更新消息的源的解析计数,
用于在所述更新消息的验证之后更新所述至少一个存储器位置的内容的装置,以及
用于不时地停止所述更新并复位所述计数值以防止算术溢出的装置。
6.如权利要求5所述的系统,包括针对来自同一源的相继的消息递增或递减所述计数值的计数装置。
7.如权利要求6所述的系统,其中所述计数装置分别将所述计数值递增或递减一。
8.如权利要求6所述的系统,其中在可能导致产生回声更新消息的环境中,所述计数装置分别将所述计数值递增或递减多于一的值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2006905527A AU2006905527A0 (en) | 2006-10-05 | Advanced Contention Detection | |
AU2006905527 | 2006-10-05 | ||
PCT/AU2007/001490 WO2008040072A1 (en) | 2006-10-05 | 2007-10-05 | Advanced contention detection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101548268A CN101548268A (zh) | 2009-09-30 |
CN101548268B true CN101548268B (zh) | 2014-05-21 |
Family
ID=39268046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200780045166.3A Active CN101548268B (zh) | 2006-10-05 | 2007-10-05 | 更新存储器位置的内容的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (6) | US8086805B2 (zh) |
EP (1) | EP2069930A4 (zh) |
JP (1) | JP5318768B2 (zh) |
CN (1) | CN101548268B (zh) |
AU (1) | AU2007304895A1 (zh) |
WO (1) | WO2008040072A1 (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844665B2 (en) | 2004-04-23 | 2010-11-30 | Waratek Pty Ltd. | Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers |
US20060265704A1 (en) * | 2005-04-21 | 2006-11-23 | Holt John M | Computer architecture and method of operation for multi-computer distributed processing with synchronization |
US20080120477A1 (en) * | 2006-10-05 | 2008-05-22 | Holt John M | Contention detection with modified message format |
WO2008040071A1 (en) * | 2006-10-05 | 2008-04-10 | Waratek Pty Limited | Contention detection |
WO2008040073A1 (en) * | 2006-10-05 | 2008-04-10 | Waratek Pty Limited | Contention resolution with counter rollover |
WO2008040065A1 (en) * | 2006-10-05 | 2008-04-10 | Waratek Pty Limited | Contention detection and resolution |
US8086805B2 (en) | 2006-10-05 | 2011-12-27 | Waratek Pty Ltd. | Advanced contention detection |
WO2008040076A1 (en) * | 2006-10-05 | 2008-04-10 | Waratek Pty Limited | Contention resolution with echo cancellation |
US20080140973A1 (en) * | 2006-10-05 | 2008-06-12 | Holt John M | Contention detection with data consolidation |
US20080250221A1 (en) * | 2006-10-09 | 2008-10-09 | Holt John M | Contention detection with data consolidation |
US8091082B2 (en) * | 2008-03-12 | 2012-01-03 | DGN Technologies, Inc. | Systems and methods for risk analysis and updating of software |
US8533280B1 (en) * | 2008-05-02 | 2013-09-10 | BitGravity, Inc. | Distributed origin content delivery network |
US8151138B2 (en) * | 2008-10-31 | 2012-04-03 | Dell Products L.P. | Redundant memory architecture management methods and systems |
US8108557B2 (en) * | 2009-01-22 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | System and method for measuring clock skew on a network |
JP4699540B2 (ja) * | 2009-04-22 | 2011-06-15 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 光ネットワーク・システムおよびメモリ・アクセス方法 |
US10580048B2 (en) * | 2009-12-07 | 2020-03-03 | Wirepath Home Systems, Llc | Synchronizing a cost estimate on an electronic device |
US8738712B2 (en) * | 2009-12-31 | 2014-05-27 | Verizon Patent And Licensing Inc. | Method and system for storing and presenting program messages |
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
US8621270B2 (en) | 2010-09-24 | 2013-12-31 | Hitachi Data Systems Corporation | System and method for transparent recovery of damaged or unavailable objects in a replicated object storage system |
JP5692244B2 (ja) * | 2011-01-31 | 2015-04-01 | 富士通株式会社 | 通信方法、ノード、およびネットワークシステム |
DE102011116866A1 (de) * | 2011-10-25 | 2013-04-25 | Fujitsu Technology Solutions Intellectual Property Gmbh | Clustersystem und Verfahren zum Ausführen einer Mehrzahl von virtuellen Maschinen |
US8595546B2 (en) | 2011-10-28 | 2013-11-26 | Zettaset, Inc. | Split brain resistant failover in high availability clusters |
US9032385B2 (en) | 2011-12-28 | 2015-05-12 | Lg Electronics Inc. | Mobile terminal and control method thereof |
JP5816572B2 (ja) * | 2012-02-23 | 2015-11-18 | 日立オートモティブシステムズ株式会社 | 車両用制御装置 |
US9063721B2 (en) | 2012-09-14 | 2015-06-23 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
US9183048B2 (en) * | 2012-12-20 | 2015-11-10 | Oracle International Corporation | System and method for implementing scalable contention-adaptive statistics counters |
CN103581010B (zh) * | 2013-11-12 | 2017-02-08 | 深圳市阳光智电科技有限公司 | 一种低压电力载波点对点数据传输方法 |
US20150149609A1 (en) * | 2013-11-22 | 2015-05-28 | Microsoft Corporation | Performance monitoring to provide real or near real time remediation feedback |
US10078464B2 (en) * | 2016-07-17 | 2018-09-18 | International Business Machines Corporation | Choosing a leader in a replicated memory system |
US20180027009A1 (en) * | 2016-07-20 | 2018-01-25 | Cisco Technology, Inc. | Automated container security |
JP7203102B2 (ja) * | 2017-10-31 | 2023-01-12 | アビニシオ テクノロジー エルエルシー | コンピュータクラスタインターフェースを管理すること |
US11089545B1 (en) * | 2020-03-18 | 2021-08-10 | YoSmart, INC | System and method for low power data transmission and control |
US11516105B2 (en) * | 2020-05-22 | 2022-11-29 | Salesforce.Com, Inc. | Interspersed message batching in a database system |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1282155A (zh) * | 1999-04-30 | 2001-01-31 | 哈里加拿大公司 | 利用广播控制信道编程无线用户终端 |
Family Cites Families (152)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4068298A (en) * | 1975-12-03 | 1978-01-10 | Systems Development Corporation | Information storage and retrieval system |
JPS60186919A (ja) | 1984-01-30 | 1985-09-24 | Nec Corp | オ−トノ−マスタイマ回路 |
US5291581A (en) | 1987-07-01 | 1994-03-01 | Digital Equipment Corporation | Apparatus and method for synchronization of access to main memory signal groups in a multiprocessor data processing system |
US4969092A (en) * | 1988-09-30 | 1990-11-06 | Ibm Corp. | Method for scheduling execution of distributed application programs at preset times in an SNA LU 6.2 network environment |
US5113507A (en) | 1988-10-20 | 1992-05-12 | Universities Space Research Association | Method and apparatus for a sparse distributed memory system |
US5062037A (en) * | 1988-10-24 | 1991-10-29 | Ibm Corp. | Method to provide concurrent execution of distributed application programs by a host computer and an intelligent work station on an sna network |
IT1227360B (it) * | 1988-11-18 | 1991-04-08 | Honeywell Bull Spa | Sistema multiprocessore di elaborazione dati con replicazione di dati globali. |
US5067069A (en) * | 1989-02-03 | 1991-11-19 | Digital Equipment Corporation | Control of multiple functional units with parallel operation in a microcoded execution unit |
US4982402A (en) * | 1989-02-03 | 1991-01-01 | Digital Equipment Corporation | Method and apparatus for detecting and correcting errors in a pipelined computer system |
US5089957A (en) * | 1989-11-14 | 1992-02-18 | National Semiconductor Corporation | Ram based events counter apparatus and method |
US5283897A (en) * | 1990-04-30 | 1994-02-01 | International Business Machines Corporation | Semi-dynamic load balancer for periodically reassigning new transactions of a transaction type from an overload processor to an under-utilized processor based on the predicted load thereof |
DE69124285T2 (de) * | 1990-05-18 | 1997-08-14 | Fujitsu Ltd | Datenverarbeitungssystem mit einem Eingangs-/Ausgangswegetrennmechanismus und Verfahren zur Steuerung des Datenverarbeitungssystems |
JPH0619785A (ja) * | 1992-03-27 | 1994-01-28 | Matsushita Electric Ind Co Ltd | 分散共有仮想メモリーとその構成方法 |
JP3730252B2 (ja) * | 1992-03-31 | 2005-12-21 | トランスメタ コーポレイション | レジスタ名称変更方法及び名称変更システム |
FR2691559B1 (fr) * | 1992-05-25 | 1997-01-03 | Cegelec | Systeme logiciel a objets repliques exploitant une messagerie dynamique, notamment pour installation de controle/commande a architecture redondante. |
US5553267A (en) * | 1992-07-01 | 1996-09-03 | Digital Equipment Corporation | Method and apparatus for coordinating access to and modifying multiple element data objects in a shared memory |
US5418966A (en) * | 1992-10-16 | 1995-05-23 | International Business Machines Corporation | Updating replicated objects in a plurality of memory partitions |
US5581555A (en) | 1993-09-17 | 1996-12-03 | Scientific-Atlanta, Inc. | Reverse path allocation and contention resolution scheme for a broadband communications system |
WO1995008809A2 (en) | 1993-09-24 | 1995-03-30 | Oracle Corporation | Method and apparatus for data replication |
US5544345A (en) * | 1993-11-08 | 1996-08-06 | International Business Machines Corporation | Coherence controls for store-multiple shared data coordinated by cache directory entries in a shared electronic storage |
US5568605A (en) | 1994-01-13 | 1996-10-22 | International Business Machines Corporation | Resolving conflicting topology information |
US5434994A (en) * | 1994-05-23 | 1995-07-18 | International Business Machines Corporation | System and method for maintaining replicated data coherency in a data processing system |
AU5953296A (en) * | 1995-05-30 | 1996-12-18 | Corporation For National Research Initiatives | System for distributed task execution |
US5612865A (en) | 1995-06-01 | 1997-03-18 | Ncr Corporation | Dynamic hashing method for optimal distribution of locks within a clustered system |
US5761705A (en) * | 1996-04-04 | 1998-06-02 | Symbios, Inc. | Methods and structure for maintaining cache consistency in a RAID controller having redundant caches |
US6199116B1 (en) * | 1996-05-24 | 2001-03-06 | Microsoft Corporation | Method and system for managing data while sharing application programs |
US5787262A (en) * | 1996-06-26 | 1998-07-28 | Microsoft Corporation | System and method for distributed conflict resolution between data objects replicated across a computer network |
US5974506A (en) * | 1996-06-28 | 1999-10-26 | Digital Equipment Corporation | Enabling mirror, nonmirror and partial mirror cache modes in a dual cache system |
US5802585A (en) * | 1996-07-17 | 1998-09-01 | Digital Equipment Corporation | Batched checking of shared memory accesses |
US6327630B1 (en) * | 1996-07-24 | 2001-12-04 | Hewlett-Packard Company | Ordered message reception in a distributed data processing system |
US6314558B1 (en) | 1996-08-27 | 2001-11-06 | Compuware Corporation | Byte code instrumentation |
US6760903B1 (en) * | 1996-08-27 | 2004-07-06 | Compuware Corporation | Coordinated application monitoring in a distributed computing environment |
US6049809A (en) * | 1996-10-30 | 2000-04-11 | Microsoft Corporation | Replication optimization system and method |
US6148377A (en) | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
US5918248A (en) * | 1996-12-30 | 1999-06-29 | Northern Telecom Limited | Shared memory control algorithm for mutual exclusion and rollback |
US6192514B1 (en) * | 1997-02-19 | 2001-02-20 | Unisys Corporation | Multicomputer system |
US6633577B1 (en) * | 1997-03-26 | 2003-10-14 | Nec Corporation | Handshaking circuit for resolving contention on a transmission medium regardless of its length |
US6425016B1 (en) * | 1997-05-27 | 2002-07-23 | International Business Machines Corporation | System and method for providing collaborative replicated objects for synchronous distributed groupware applications |
US5913213A (en) | 1997-06-16 | 1999-06-15 | Telefonaktiebolaget L M Ericsson | Lingering locks for replicated data objects |
US5943501A (en) | 1997-06-27 | 1999-08-24 | Wisconsin Alumni Research Foundation | Multiple processor, distributed memory computer with out-of-order processing |
US6032216A (en) * | 1997-07-11 | 2000-02-29 | International Business Machines Corporation | Parallel file system with method using tokens for locking modes |
US6321231B1 (en) * | 1997-08-11 | 2001-11-20 | Marshall, O'toole, Gerstein, Murray & Borun | Data management and order delivery system |
US6324587B1 (en) * | 1997-12-23 | 2001-11-27 | Microsoft Corporation | Method, computer program product, and data structure for publishing a data object over a store and forward transport |
US6449734B1 (en) * | 1998-04-17 | 2002-09-10 | Microsoft Corporation | Method and system for discarding locally committed transactions to ensure consistency in a server cluster |
JP3866426B2 (ja) * | 1998-11-05 | 2007-01-10 | 日本電気株式会社 | クラスタ計算機におけるメモリ障害処理方法及びクラスタ計算機 |
EP0969377B1 (en) | 1998-06-30 | 2009-01-07 | International Business Machines Corporation | Method of replication-based garbage collection in a multiprocessor system |
US6178441B1 (en) | 1998-09-21 | 2001-01-23 | International Business Machines Corporation | Method and system in a computer network for the reliable and consistent ordering of client requests |
JP3578385B2 (ja) * | 1998-10-22 | 2004-10-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンピュータ、及びレプリカ同一性保持方法 |
US6460051B1 (en) | 1998-10-28 | 2002-10-01 | Starfish Software, Inc. | System and methods for synchronizing datasets in a communication environment having high-latency or other adverse characteristics |
US6266747B1 (en) * | 1998-10-30 | 2001-07-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Method for writing data into data storage units |
US6163801A (en) * | 1998-10-30 | 2000-12-19 | Advanced Micro Devices, Inc. | Dynamic communication between computer processes |
AU2590700A (en) * | 1998-12-17 | 2000-07-03 | California Institute Of Technology | Programming system and thread synchronization mechanisms for the development of selectively sequential and multithreaded computer programs |
US7283476B2 (en) | 1999-01-11 | 2007-10-16 | Hewlett-Packard Development Company, L.P. | Identity negotiation switch protocols |
US6446170B1 (en) | 1999-01-19 | 2002-09-03 | International Business Machines Corporation | Efficient store machine in cache based microprocessor |
US6321298B1 (en) * | 1999-01-25 | 2001-11-20 | International Business Machines Corporation | Full cache coherency across multiple raid controllers |
US6757896B1 (en) * | 1999-01-29 | 2004-06-29 | International Business Machines Corporation | Method and apparatus for enabling partial replication of object stores |
WO2000051866A1 (en) * | 1999-03-02 | 2000-09-08 | Textron Inc. | Golf cart having disk brakes and single point latching parking brake |
JP3254434B2 (ja) * | 1999-04-13 | 2002-02-04 | 三菱電機株式会社 | データ通信装置 |
US6611955B1 (en) * | 1999-06-03 | 2003-08-26 | Swisscom Ag | Monitoring and testing middleware based application software |
US6122630A (en) | 1999-06-08 | 2000-09-19 | Iti, Inc. | Bidirectional database replication scheme for controlling ping-ponging |
US6680942B2 (en) * | 1999-07-02 | 2004-01-20 | Cisco Technology, Inc. | Directory services caching for network peer to peer service locator |
GB2353113B (en) * | 1999-08-11 | 2001-10-10 | Sun Microsystems Inc | Software fault tolerant computer system |
US6370625B1 (en) * | 1999-12-29 | 2002-04-09 | Intel Corporation | Method and apparatus for lock synchronization in a microprocessor system |
US6823511B1 (en) * | 2000-01-10 | 2004-11-23 | International Business Machines Corporation | Reader-writer lock for multiprocessor systems |
US6775831B1 (en) * | 2000-02-11 | 2004-08-10 | Overture Services, Inc. | System and method for rapid completion of data processing tasks distributed on a network |
US20020161848A1 (en) * | 2000-03-03 | 2002-10-31 | Willman Charles A. | Systems and methods for facilitating memory access in information management environments |
DE60132056T2 (de) * | 2000-03-15 | 2008-12-18 | Sumitomo Osaka Cement Co., Ltd. | Optischer wellenleitermodulator mit ausgangslichtmonitor |
US6975629B2 (en) | 2000-03-22 | 2005-12-13 | Texas Instruments Incorporated | Processing packets based on deadline intervals |
US20030005407A1 (en) * | 2000-06-23 | 2003-01-02 | Hines Kenneth J. | System and method for coordination-centric design of software systems |
JP2002024158A (ja) * | 2000-07-05 | 2002-01-25 | Denso Corp | データ転送装置及びマイクロコンピュータ |
JP2002116940A (ja) * | 2000-07-31 | 2002-04-19 | Fujitsu Ltd | データ分散管理装置、データ分散管理プログラムおよび記録媒体 |
US6529917B1 (en) * | 2000-08-14 | 2003-03-04 | Divine Technology Ventures | System and method of synchronizing replicated data |
US6725014B1 (en) * | 2000-08-17 | 2004-04-20 | Honeywell International, Inc. | Method and system for contention resolution in radio frequency identification systems |
US7058826B2 (en) * | 2000-09-27 | 2006-06-06 | Amphus, Inc. | System, architecture, and method for logical server and other network devices in a dynamically configurable multi-server network environment |
WO2002044835A2 (en) | 2000-11-28 | 2002-06-06 | Gingerich Gregory L | A method and system for software and hardware multiplicity |
US7020736B1 (en) * | 2000-12-18 | 2006-03-28 | Redback Networks Inc. | Method and apparatus for sharing memory space across mutliple processing units |
JP4564162B2 (ja) * | 2000-12-25 | 2010-10-20 | 株式会社アデランスホールディングス | 擬毛材及び増毛方法 |
US6754859B2 (en) * | 2001-01-03 | 2004-06-22 | Bull Hn Information Systems Inc. | Computer processor read/alter/rewrite optimization cache invalidate signals |
US7383329B2 (en) * | 2001-02-13 | 2008-06-03 | Aventail, Llc | Distributed cache for state transfer operations |
US7031989B2 (en) * | 2001-02-26 | 2006-04-18 | International Business Machines Corporation | Dynamic seamless reconfiguration of executing parallel software |
US6904059B1 (en) * | 2001-03-06 | 2005-06-07 | Microsoft Corporation | Adaptive queuing |
US6882645B2 (en) * | 2001-03-13 | 2005-04-19 | Sun Microsystems, Inc. | Apparatus and method for sequencing memory operations in an asynchronous switch fabric |
US6842830B2 (en) * | 2001-03-31 | 2005-01-11 | Intel Corporation | Mechanism for handling explicit writeback in a cache coherent multi-node architecture |
US7082604B2 (en) * | 2001-04-20 | 2006-07-25 | Mobile Agent Technologies, Incorporated | Method and apparatus for breaking down computing tasks across a network of heterogeneous computer for parallel execution by utilizing autonomous mobile agents |
JP2002333994A (ja) * | 2001-05-11 | 2002-11-22 | Fujitsu Ltd | 情報処理装置のトレース情報出力方法、情報処理装置、及び情報処理システム |
JP2002339841A (ja) * | 2001-05-15 | 2002-11-27 | Honda Motor Co Ltd | 車両の油圧式エンジン始動装置 |
US7047521B2 (en) | 2001-06-07 | 2006-05-16 | Lynoxworks, Inc. | Dynamic instrumentation event trace system and methods |
US6687709B2 (en) * | 2001-06-29 | 2004-02-03 | International Business Machines Corporation | Apparatus for database record locking and method therefor |
JP2003018204A (ja) * | 2001-07-02 | 2003-01-17 | Hitachi Ltd | フロー検出機能を備えたパケット転送装置およびフロー管理方法 |
US6590404B2 (en) * | 2001-07-05 | 2003-07-08 | International Business Machines Corp. | Force and centrality measuring tool |
US6862608B2 (en) * | 2001-07-17 | 2005-03-01 | Storage Technology Corporation | System and method for a distributed shared memory |
WO2003017114A1 (en) | 2001-08-20 | 2003-02-27 | Gausa, Llc | System and method for real-time multi-directional file-based data streaming editor |
US7159220B2 (en) * | 2001-09-28 | 2007-01-02 | Intel Corporation | Flexible acceleration of java thread synchronization on multiprocessor computers |
US6968372B1 (en) * | 2001-10-17 | 2005-11-22 | Microsoft Corporation | Distributed variable synchronizer |
KR100441712B1 (ko) * | 2001-12-29 | 2004-07-27 | 엘지전자 주식회사 | 확장 가능형 다중 처리 시스템 및 그의 메모리 복제 방법 |
US6779093B1 (en) * | 2002-02-15 | 2004-08-17 | Veritas Operating Corporation | Control facility for processing in-band control messages during data replication |
US6754789B2 (en) * | 2002-02-22 | 2004-06-22 | Mcgraw-Edison Company | Distributed fault resilient shared memory |
WO2003083614A2 (en) | 2002-03-25 | 2003-10-09 | Eternal Systems, Inc. | Transparent consistent active replication of multithreaded application programs |
RU2334604C2 (ru) * | 2002-04-22 | 2008-09-27 | Алкоа Инк. | Листы для пайки, покрытые флюсом |
US7024519B2 (en) | 2002-05-06 | 2006-04-04 | Sony Computer Entertainment Inc. | Methods and apparatus for controlling hierarchical cache memory |
US7010576B2 (en) * | 2002-05-30 | 2006-03-07 | International Business Machines Corporation | Efficient method of globalization and synchronization of distributed resources in distributed peer data processing environments |
FR2841004B1 (fr) * | 2002-06-18 | 2004-12-17 | St Microelectronics Sa | Procede lithographique utilisant une resine a amplification chimique et comprenant des etapes de limitation d'un fluage de la resine |
JP2006512051A (ja) * | 2002-06-27 | 2006-04-13 | セントカー・インコーポレーテツド | Cngh0005ポリペプチド、抗体、組成物、方法および使用 |
US20040016307A1 (en) * | 2002-07-24 | 2004-01-29 | Albert William C. | Vibration isolation mechanism for a vibrating beam force sensor |
US7206827B2 (en) * | 2002-07-25 | 2007-04-17 | Sun Microsystems, Inc. | Dynamic administration framework for server systems |
US20040030766A1 (en) * | 2002-08-12 | 2004-02-12 | Michael Witkowski | Method and apparatus for switch fabric configuration |
US20040073828A1 (en) | 2002-08-30 | 2004-04-15 | Vladimir Bronstein | Transparent variable state mirroring |
US6954794B2 (en) * | 2002-10-21 | 2005-10-11 | Tekelec | Methods and systems for exchanging reachability information and for switching traffic between redundant interfaces in a network cluster |
US7445769B2 (en) * | 2002-10-31 | 2008-11-04 | Cadbury Adams Usa Llc | Compositions for removing stains from dental surfaces and methods of making and using the same |
US7287247B2 (en) * | 2002-11-12 | 2007-10-23 | Hewlett-Packard Development Company, L.P. | Instrumenting a software application that includes distributed object technology |
US6795850B2 (en) * | 2002-12-13 | 2004-09-21 | Sun Microsystems, Inc. | System and method for sharing memory among multiple storage device controllers |
US7275239B2 (en) | 2003-02-10 | 2007-09-25 | International Business Machines Corporation | Run-time wait tracing using byte code insertion |
US7114150B2 (en) | 2003-02-13 | 2006-09-26 | International Business Machines Corporation | Apparatus and method for dynamic instrumenting of code to minimize system perturbation |
US7047337B2 (en) * | 2003-04-24 | 2006-05-16 | International Business Machines Corporation | Concurrent access of shared resources utilizing tracking of request reception and completion order |
WO2004097594A2 (en) | 2003-04-29 | 2004-11-11 | Nobel Communications | Multiple packet routing system (mprs) |
US7404203B2 (en) * | 2003-05-06 | 2008-07-22 | Oracle International Corporation | Distributed capability-based authorization architecture |
US20050010683A1 (en) * | 2003-06-30 | 2005-01-13 | Prabhanjan Moleyar | Apparatus, system and method for performing table maintenance |
JP3973606B2 (ja) * | 2003-07-04 | 2007-09-12 | 本田技研工業株式会社 | 無段変速機用ベルト |
US6956386B2 (en) * | 2003-08-01 | 2005-10-18 | Amst Company Limited | Micro-cantilever type probe card |
US20050039171A1 (en) | 2003-08-12 | 2005-02-17 | Avakian Arra E. | Using interceptors and out-of-band data to monitor the performance of Java 2 enterprise edition (J2EE) applications |
US20050086384A1 (en) * | 2003-09-04 | 2005-04-21 | Johannes Ernst | System and method for replicating, integrating and synchronizing distributed information |
US7287133B2 (en) | 2004-08-24 | 2007-10-23 | Symantec Operating Corporation | Systems and methods for providing a modification history for a location within a data store |
US20050086661A1 (en) * | 2003-10-21 | 2005-04-21 | Monnie David J. | Object synchronization in shared object space |
US20050108481A1 (en) * | 2003-11-17 | 2005-05-19 | Iyengar Arun K. | System and method for achieving strong data consistency |
US7383483B2 (en) | 2003-12-11 | 2008-06-03 | International Business Machines Corporation | Data transfer error checking |
US7107411B2 (en) * | 2003-12-16 | 2006-09-12 | International Business Machines Corporation | Apparatus method and system for fault tolerant virtual memory management |
US7380039B2 (en) * | 2003-12-30 | 2008-05-27 | 3Tera, Inc. | Apparatus, method and system for aggregrating computing resources |
US7549150B2 (en) * | 2004-03-24 | 2009-06-16 | Microsoft Corporation | Method and system for detecting potential races in multithreaded programs |
CN101908001B (zh) | 2004-04-22 | 2014-05-14 | 瓦拉泰克有限公司 | 多计算机系统 |
US7707179B2 (en) * | 2004-04-23 | 2010-04-27 | Waratek Pty Limited | Multiple computer architecture with synchronization |
US20050257219A1 (en) * | 2004-04-23 | 2005-11-17 | Holt John M | Multiple computer architecture with replicated memory fields |
US7849452B2 (en) * | 2004-04-23 | 2010-12-07 | Waratek Pty Ltd. | Modification of computer applications at load time for distributed execution |
US20050262513A1 (en) * | 2004-04-23 | 2005-11-24 | Waratek Pty Limited | Modified computer architecture with initialization of objects |
US7844665B2 (en) | 2004-04-23 | 2010-11-30 | Waratek Pty Ltd. | Modified computer architecture having coordinated deletion of corresponding replicated memory locations among plural computers |
US20060095483A1 (en) * | 2004-04-23 | 2006-05-04 | Waratek Pty Limited | Modified computer architecture with finalization of objects |
US7639656B2 (en) | 2004-04-28 | 2009-12-29 | Symbol Technologies, Inc. | Protocol for communication between access ports and wireless switches |
US20050278280A1 (en) | 2004-05-28 | 2005-12-15 | Semerdzhiev Krasimir P | Self update mechanism for update module |
US7747980B2 (en) | 2004-06-08 | 2010-06-29 | Covia Labs, Inc. | Method and system for specifying device interoperability source specifying renditions data and code for interoperable device team |
US8442108B2 (en) * | 2004-07-12 | 2013-05-14 | Microsoft Corporation | Adaptive updates in motion-compensated temporal filtering |
US7225371B2 (en) | 2004-08-03 | 2007-05-29 | International Business Machines Corporation | Method and apparatus for storing and retrieving multiple point-in-time consistent data sets |
US7182243B2 (en) * | 2004-09-30 | 2007-02-27 | Plappert Thomas W | Mail slot assembly |
WO2006042153A2 (en) * | 2004-10-06 | 2006-04-20 | Digipede Technologies, Llc | Distributed processing system |
US8386449B2 (en) * | 2005-01-27 | 2013-02-26 | International Business Machines Corporation | Customer statistics based on database lock use |
US7548539B2 (en) * | 2005-03-08 | 2009-06-16 | Audiocodes, Inc. | Method and apparatus for Voice-over-IP call recording |
US20060265704A1 (en) * | 2005-04-21 | 2006-11-23 | Holt John M | Computer architecture and method of operation for multi-computer distributed processing with synchronization |
US7245556B1 (en) * | 2005-12-28 | 2007-07-17 | Sandisk Corporation | Methods for writing non-volatile memories for increased endurance |
US7500067B2 (en) | 2006-03-29 | 2009-03-03 | Dell Products L.P. | System and method for allocating memory to input-output devices in a multiprocessor computer system |
US7647454B2 (en) | 2006-06-12 | 2010-01-12 | Hewlett-Packard Development Company, L.P. | Transactional shared memory system and method of control |
US8086805B2 (en) * | 2006-10-05 | 2011-12-27 | Waratek Pty Ltd. | Advanced contention detection |
US20080140973A1 (en) | 2006-10-05 | 2008-06-12 | Holt John M | Contention detection with data consolidation |
US20080250221A1 (en) | 2006-10-09 | 2008-10-09 | Holt John M | Contention detection with data consolidation |
US20080189700A1 (en) | 2007-02-02 | 2008-08-07 | Vmware, Inc. | Admission Control for Virtual Machine Cluster |
-
2007
- 2007-10-05 US US11/973,397 patent/US8086805B2/en active Active
- 2007-10-05 US US11/973,372 patent/US7971005B2/en active Active
- 2007-10-05 US US11/973,385 patent/US7831779B2/en active Active
- 2007-10-05 CN CN200780045166.3A patent/CN101548268B/zh active Active
- 2007-10-05 US US11/973,389 patent/US20080133694A1/en not_active Abandoned
- 2007-10-05 AU AU2007304895A patent/AU2007304895A1/en not_active Abandoned
- 2007-10-05 WO PCT/AU2007/001490 patent/WO2008040072A1/en active Application Filing
- 2007-10-05 EP EP07815296A patent/EP2069930A4/en not_active Withdrawn
- 2007-10-05 JP JP2009530736A patent/JP5318768B2/ja active Active
- 2007-10-05 US US11/973,395 patent/US20080140982A1/en not_active Abandoned
-
2011
- 2011-12-06 US US13/312,969 patent/US20120131127A1/en not_active Abandoned
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1282155A (zh) * | 1999-04-30 | 2001-01-31 | 哈里加拿大公司 | 利用广播控制信道编程无线用户终端 |
Also Published As
Publication number | Publication date |
---|---|
US7971005B2 (en) | 2011-06-28 |
US20080133694A1 (en) | 2008-06-05 |
US7831779B2 (en) | 2010-11-09 |
US20080140982A1 (en) | 2008-06-12 |
US8086805B2 (en) | 2011-12-27 |
JP5318768B2 (ja) | 2013-10-16 |
US20080133711A1 (en) | 2008-06-05 |
CN101548268A (zh) | 2009-09-30 |
US20120131127A1 (en) | 2012-05-24 |
EP2069930A1 (en) | 2009-06-17 |
EP2069930A4 (en) | 2012-05-30 |
JP2010506273A (ja) | 2010-02-25 |
WO2008040072A1 (en) | 2008-04-10 |
US20080140976A1 (en) | 2008-06-12 |
AU2007304895A1 (en) | 2008-04-10 |
US20080126516A1 (en) | 2008-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101548268B (zh) | 更新存储器位置的内容的方法和系统 | |
US8316190B2 (en) | Computer architecture and method of operation for multi-computer distributed processing having redundant array of independent systems with replicated memory and code striping | |
CN102741826B (zh) | 在无约束事务存储器(utm)系统中执行模式切换 | |
CN102741806B (zh) | 使用缓冲存储加速事务的机构 | |
CN101416168B (zh) | 阵列比较和交换操作 | |
CN101908001A (zh) | 具有协作对象的修改后的计算机架构 | |
US20080215701A1 (en) | Modified machine architecture with advanced synchronization | |
US20080140975A1 (en) | Contention detection with data consolidation | |
US20080250221A1 (en) | Contention detection with data consolidation | |
CN102521028B (zh) | 一种分布式环境下的事务内存系统 | |
US20080126508A1 (en) | Synchronization with partial memory replication | |
Chandra et al. | Experience with a Language for Writing Coherence Protocols. | |
Kim et al. | Efficient adaptations of the non-blocking buffer for event message communication between real-time threads | |
US20080133691A1 (en) | Contention resolution with echo cancellation | |
CN101283342B (zh) | 对象图的复制 | |
CN101533363A (zh) | 引退前-后混合硬件锁定省略(hle)方案 | |
CN101283344B (zh) | 具有增强的存储器清除的多计算机系统 | |
Turek | Resilient computations in the presence of slowdowns | |
Ammann et al. | Concurrency control in a secure multilevel database via a two-snapshot algorithm | |
CN110764880A (zh) | 一种基于原子操作的三态控制方法 | |
CN101283343A (zh) | 具有部分存储器更新的改进的机器体系结构 | |
Somogyi et al. | A backtracking algorithm for the stream AND-parallel execution of logic programs | |
Voruganti | An adaptive hybrid server architecture for client-server object database management systems | |
van der Stok | Real-time distributed concurrency control algorithms with mixed time constraints | |
Raghavachari | Language and compiler mechanisms for parallel programming with customizable protocols |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230724 Address after: Irish Dublin Patentee after: Waratek Pty Ltd. Address before: New South Wales Australia Patentee before: Waratek Pty Ltd. |