JP2009512030A - Duplicate object graph - Google Patents

Duplicate object graph Download PDF

Info

Publication number
JP2009512030A
JP2009512030A JP2008534815A JP2008534815A JP2009512030A JP 2009512030 A JP2009512030 A JP 2009512030A JP 2008534815 A JP2008534815 A JP 2008534815A JP 2008534815 A JP2008534815 A JP 2008534815A JP 2009512030 A JP2009512030 A JP 2009512030A
Authority
JP
Japan
Prior art keywords
computer
machine
computers
machines
local
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.)
Pending
Application number
JP2008534815A
Other languages
Japanese (ja)
Inventor
ジョン マシュー ホルト
Original Assignee
ワラテック プロプライエタリー リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AU2005905580A external-priority patent/AU2005905580A0/en
Application filed by ワラテック プロプライエタリー リミテッド filed Critical ワラテック プロプライエタリー リミテッド
Publication of JP2009512030A publication Critical patent/JP2009512030A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems

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)
  • Stored Programmes (AREA)

Abstract

少なくとも1つのアプリケーションプログラム(50)が、各々がローカルメモリを有する複数のコンピュータM1、M2....Mn上で同時に実行されるマルチコンピュータ環境において幾つかのメモリロケーションだけの更新が開示される。各ローカルメモリにおいて、各々がプリミティブフィールド(11)を含むオブジェクトA及びBが開示される。しかしながら、アプリケーションプログラム(50)の同時オペレーションは、他の全マシーンに後で複製しなくてはならない1つのマシーンにおける「非プリミティブ」リファレンスフィールド(10)を生じることができる。しかしながら、リファレンスフィールド(10)は、1つのマシーンのローカルメモリ内の別のオブジェクト(H)を参照し、よって、対応するオブジェクト(T、K)を互いのマシーンのローカルメモリ内に作成して、対応する非プリミティブフィールド(10)によって参照しなくてはならない。
【選択図】図6
At least one application program (50) includes a plurality of computers M1, M2,. . . . An update of only a few memory locations in a multi-computer environment running concurrently on Mn is disclosed. In each local memory, objects A and B each containing a primitive field (11) are disclosed. However, simultaneous operation of the application program (50) can result in a “non-primitive” reference field (10) on one machine that must be later replicated to all other machines. However, the reference field (10) refers to another object (H) in the local memory of one machine, thus creating a corresponding object (T, K) in the local memory of each machine, Must be referenced by the corresponding non-primitive field (10).
[Selection] Figure 6

Description

本発明は、コンピュータ処理に関し、詳細には、通信ネットワークを介して相互接続された複数のコンピュータの同時オペレーションに関する。   The present invention relates to computer processing, and in particular, to the simultaneous operation of multiple computers interconnected via a communication network.

本出願人名でWO2005/103926(米国特許出願第11/111,946号及び公開番号2005−0262313が対応)において公開された国際特許出願番号PCT/AU2005/000580(代理人整理番号5027F−WO)では、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラムの異なる部分が、複数のコンピュータの対応する異なるコンピュータ上でほぼ同時にどのように動作することができるかを開示している。この同時オペレーションは、本出願の優先日現在で商用的に使用されていない。「Computer Architecture Method of Operation for Multi−Computer Distributed Processing and Co−ordinated Memory and Asset Handling(マルチ−コンピュータ分散処理及び調整されたメモリ及び資産処理のためのオペレーションのコンピュータアーキテクチャ方法)」という名称の米国特許出願第11/259885号が対応する国際特許出願番号PCT/AU2005/001641(代理人整理番号5027F−D1−WO)及び本出願の優先日では公開されていない本出願人名でのPCT/AU2006/000532(代理人整理番号5027F−D2−WO)でも更に詳細に開示されている。上記の先願の各々の明細書の内容は、全ての目的において相互参照により本明細書に組み込まれる。   In the international patent application number PCT / AU2005 / 000580 (Attorney Docket No. 5027F-WO) published in WO 2005/103926 (corresponding to US patent application No. 11 / 111,946 and publication number 2005-0262313) in the name of the present applicant Discloses how different portions of an application program that are described to run only on a single computer can run on corresponding different computers of the plurality of computers at substantially the same time. This simultaneous operation is not commercially used as of the priority date of this application. "Computer Architecture Method of Operation for Multi-Computer Distributed Processing and Co-Organized Memory and Asset Handling" Patent Methodology for the United States: "Computer-Architecture Method for Memory and Asset Processing" PCT / AU2006 / 000532 in the international patent application number PCT / AU2005 / 001641 (Attorney Docket No. 5027F-D1-WO) to which 11/259985 corresponds and in the name of the applicant not published on the priority date of this application (Attorney Docket No. 5027F-D2-WO) is also disclosed in more detail. The contents of each specification of the above prior applications are incorporated herein by cross-reference for all purposes.

簡潔に述べると、上述の特許明細書では、単一のコンピュータ上でのみ動作するように記述された少なくとも1つのアプリケーションプログラムが、独立したローカルメモリを各々が備えた幾つかのコンピュータ上で同時に動作できることが開示されている。このプログラムのオペレーションに必要なメモリロケーションは、各コンピュータの独立したローカルメモリに複製される。アプリケーションプログラムがいずれかの複製されたメモリロケーションに新しいデータを書き込む度に、当該新しいデータが送信され、各コンピュータの各対応するメモリロケーションに記憶される。従って、伝送遅延の可能性は別として、各コンピュータは、そのコンテンツが互いのコンピュータのローカルメモリと実質的に同じであり、且つこれを維持するよう更新されるローカルメモリを有する。全てのアプリケーションプログラムは、一般に、新しいデータが書き込まれるよりも遙かに頻繁にデータを読み取るので、上述の構成により、コンピュータ処理速度における相当な利点を達成することが可能になる。詳細には、こうした方策によって、商品通信ネットワークによって相互接続された2つ又はそれ以上の汎用コンピュータが、単一のコンピュータ上でのみ実行されるよう記述されたアプリケーションプログラム下で同時に実行し動作することが可能になる。   Briefly stated, in the above-mentioned patent specification, at least one application program written to run only on a single computer runs simultaneously on several computers, each with independent local memory. It is disclosed that it can be done. The memory location required for the operation of this program is replicated to an independent local memory on each computer. Each time an application program writes new data to any replicated memory location, the new data is transmitted and stored in each corresponding memory location on each computer. Thus, apart from the possibility of transmission delay, each computer has a local memory whose contents are updated to be substantially the same as and maintain each other's computer's local memory. Since all application programs generally read data much more frequently than new data is written, the above arrangement allows a significant advantage in computer processing speed to be achieved. In particular, these measures allow two or more general purpose computers interconnected by a commodity communication network to run and operate simultaneously under an application program written to run only on a single computer. Is possible.

JAVA(登録商標)及びMICROSOFT.NETを含むよりハイレベルの言語は、2つのタイプのメモリロケーション又はフィールドを有する。これらの第1のタイプは、いわゆる「プリミティブ」フィールドであり、数字又は文字などの英数字データを包含する。このコンテンツは、単に別のプリミティブフィールドにコピーすることによって容易に複写される。フィールドの第2タイプは、一般にリファレンスフィールドと呼ばれる「非プリミティブ」フィールドであり、本質的に別のメモリロケーション又は別のオブジェクトへの「ポインタ」を包含する。プログラミング言語は、1つ又はそれ以上のポインタを使用して、コンピュータのオペレーションを参照アドレスにリダイレクトする。ポインタが模倣的にコピーされた場合、該ポインタは、他のマシーンにおける同一のメモリロケーションを指すことになるが、これらのロケーションは、同じメモリコンテンツを有する場合もあり、或いは有さない場合もある。   JAVA (registered trademark) and MICROSOFT. Higher level languages including NET have two types of memory locations or fields. These first types are so-called “primitive” fields and contain alphanumeric data such as numbers or letters. This content is easily duplicated by simply copying it to another primitive field. The second type of field is a “non-primitive” field, commonly referred to as a reference field, which essentially contains a “pointer” to another memory location or another object. Programming languages use one or more pointers to redirect computer operation to a reference address. If the pointer is copied in a mimicry, it will point to the same memory location on other machines, but these locations may or may not have the same memory content. .

本発明の根源は、マルチコンピュータシステムにおける非プリミティブフィールドの複製を容易にし、これによって実質的に同一のメモリ構造及びコンテンツの所望の目標に可能な限り近づけることを可能にする要求である。   The root of the present invention is a requirement that facilitates the duplication of non-primitive fields in a multi-computer system, thereby making it as close as possible to the desired goal of substantially the same memory structure and content.

本発明の第1の態様によれば、少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータ環境において、複写されたオブジェクトの非プリミティブフィールドを複製する方法が開示され、該方法は、
(i)コンコーダンステーブルを作成し、複数のコンピュータのいずれか1つにおいて存在する各オブジェクトについて、コンコーダンステーブルへのエントリをオブジェクトに対する各リファレンスに対応させる段階と、
(ii)コンコーダンステーブルにおける各エントリが、1つのマシーンのオブジェクトによって参照されるローカルメモリオブジェクトへのローカルポインタを包含しており、各コンピュータにおいてコンコーダンステーブルを複製するか、或いは、サーバーコンピュータ内に存在する全マシーンに対する単一のコンコーダンステーブルの対応する部分に各コンピュータがアクセスできるようにする段階と、
(iii)対応する非プリミティブフィールド及びローカルオブジェクトを他の各マシーンに指定させ、対応するローカルメモリオブジェクトの対応するローカルポインタを1つ又は複数のテーブルに入力する段階とを含む。
According to a first aspect of the present invention, different portions of at least one application program are copied in a multi-computer environment that is executed simultaneously on different computers of a plurality of computers interconnected via a communication network. A method for replicating a non-primitive field of an object is disclosed, the method comprising:
(I) creating a concordance table and, for each object present in any one of the plurality of computers, correlating an entry in the concordance table with each reference to the object;
(Ii) Each entry in the concordance table contains a local pointer to a local memory object referenced by an object on one machine and either replicates the concordance table on each computer or exists in the server computer Allowing each computer to access the corresponding part of a single concordance table for all machines;
(Iii) causing each other machine to specify a corresponding non-primitive field and a local object, and entering a corresponding local pointer of the corresponding local memory object into one or more tables.

本発明の第2の態様によれば、少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータシステムが開示され、該コンピュータのいずれか1つにおいて作成された各非プリミティブフィールドについて、全コンピュータによってアクセス可能か或いは各コンピュータに複製されたコンコーダンステーブルへの対応するエントリが存在し、テーブルエントリは、1つのコンピュータの非プリミティブフィールドによって参照されたローカルメモリオブジェクトへのローカルポインタを包含し、コンピュータは互いに、対応する非プリミティブフィールド及びローカルオブジェクトを指定し、対応するローカルメモリオブジェクトの対応するローカルポインタは、1つ又は複数のコンコーダンステーブルに入力される。   According to a second aspect of the present invention, there is disclosed a multi-computer system in which different parts of at least one application program are executed simultaneously on different computers of a plurality of computers interconnected via a communication network, For each non-primitive field created on any one of the computers, there is a corresponding entry in the concordance table that is accessible by all computers or replicated to each computer, and the table entry is a non-primitive of one computer Contains a local pointer to the local memory object referenced by the field, and the computer specifies each other a corresponding non-primitive field and a local object, and a corresponding local memory Corresponding local pointer Li object is input to one or more of concordance tables.

本発明の第3の態様によれば、通信ネットワークを介して相互接続され、上記の方法を確実に実行するよう動作可能な複数のコンピュータが開示される。   According to a third aspect of the present invention, there are disclosed a plurality of computers interconnected via a communication network and operable to reliably perform the above method.

本発明の第4の態様によれば、記憶媒体内に記憶され、上記の方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が開示される。   According to a fourth aspect of the invention, there is disclosed a computer program product comprising a set of program instructions stored in a storage medium and operable to allow a plurality of computers to perform the above method.

本発明の第5の態様によれば、上記の方法を実行するか、或いは上記のコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。   According to a fifth aspect of the invention, there is provided a single computer adapted to cooperate with at least one other computer to perform the above method or form the above computer system. Disclosed.

JAVA(登録商標)言語に関連して実施形態を説明するが、本発明はこの言語に限定されず、特に、MICROSOFT.NETプラットフォーム及びアーキテクチャ(Visual Basic、VisualC、VisualC++、及びVisualC#)、FORTRAN、C、C++、COBOL、BASIC及び同様のものを含む他の言語(手続き、宣言、及びオブジェクト指向言語を含む)と共に使用できることは当業者には明らかであろう。   Although embodiments will be described in relation to the JAVA® language, the present invention is not limited to this language, and in particular, MICROSOFT. Can be used with other languages (including procedural, declarative, and object-oriented languages), including NET platforms and architectures (Visual Basic, VisualC, VisualC ++, and VisualC #), FORTRAN, C, C ++, COBOL, BASIC, and the like Will be apparent to those skilled in the art.

図1Aに示すような仮想マシーンを作成することによってアプリケーションの特定の言語を利用する単一のコンピュータ又はマシーン(種々の製造業者のいずれかによって作製され、種々の異なる言語のいずれかで動作するオペレーティングシステム(又は等価な制御ソフトウェア又は他のメカニズム)を有する)を提供することは、従来技術で知られている。   A single computer or machine that utilizes a particular language of an application by creating a virtual machine as shown in FIG. 1A (an operating system created by any of a variety of manufacturers and operating in any of a variety of different languages Providing a system (or equivalent control software or other mechanism) is known in the prior art.

図1Aのコード及びデータ並びに仮想マシーン設定又は構成は、JAVA(登録商標)言語で記述され且つJAVA(登録商標)仮想マシーン61内で実行されるアプリケーションコード50の形態を取る。従って、アプリケーションの目的とする言語がJAVA(登録商標)言語である場合、マシーン製造業者及びコンピュータ又はマシーンの内部の詳細に関わらず、JAVA(登録商標)コードを操作できるJAVA(登録商標)仮想マシーンが使用される。更なる詳細については、引用により本明細書に組み込まれる、米国のSun Microsystems Inc.のT.Lindholm及びF.Yellinによる「The JAVA(登録商標) Virtual Machine Specification」 2nd Edition(JAVA(登録商標)仮想マシーン仕様) 第2版を参照されたい。   The code and data and virtual machine settings or configuration of FIG. 1A take the form of application code 50 written in the JAVA® language and executed within the JAVA® virtual machine 61. Therefore, if the target language of the application is JAVA® language, a JAVA® virtual machine that can operate JAVA® code regardless of the machine manufacturer and the details inside the computer or machine. Is used. For further details, see US Sun Microsystems Inc., which is incorporated herein by reference. T. Lindholm and F.M. See “The JAVA® Virtual Machine Specification” 2nd Edition (JAVA® virtual machine specification) 2nd edition by Yellin.

図1Aのこの従来技術の構成は、図1Bに見られるように、便宜上「分散型ランタイム」又は「分散型ランタイムシステム」DRT71と呼ばれる付加的な機能を提供することによって、本発明の実施形態に従って修正される。   This prior art configuration of FIG. 1A is in accordance with an embodiment of the present invention by providing an additional function referred to as a “distributed runtime” or “distributed runtime system” DRT 71 for convenience, as seen in FIG. 1B. Will be corrected.

図1B及び1Cでは、アプリケーションコード50は、矢印75又は75A又は75Bで示されるロード処理を介して分散型ランタイムシステム71と協働してJava(登録商標)仮想マシーンM1、M2、...Mnにロードされる。本明細書で使用される用語「分散型ランタイム」及び「分散型ランタイムシステム」は、本質的には同義語であり、限定ではなく例証として、特定のプラットフォーム上で実行される特定の言語で記述されたソフトウェアをサポートするライブラリコード及びプロセスを含むことは一般に理解される。更に、分散型ランタイムシステムはまた、特定の分散型コンピュータ環境内で実行される特定の言語で記述されたソフトウェアをサポートするライブラリコード及びプロセスを含むことができる。ランタイムシステム(分散型ランタイムシステムであっても、又はそうでなくても)は、通常、システム呼出し、プログラム起動及び終了、及びメモリ管理などのプログラムとオペレーティングシステムとの間のインターフェースの詳細を処理する。バックグラウンドの目的で、従来の分散型コンピュータ環境(DCE)(本発明の好ましい実施形態で使用される本発明の分散型ランタイム又は分散型ランタイムシステム71の機能を提供しないもの)は、Open Software Foundationから利用可能である。この分散型コンピュータ環境(DCE)は、マシーン上で実行されるソフトウェアに対するコンピュータ間通信の形式を実行するが、多くの制限の中でも、所要の修正又は通信オペレーションを実施することができない。その機能及びオペレーションの中で、好ましいDRT71は、複数のマシーンM1、M2、...Mn間の特定の通信を調整する。更に、好ましい分散型ランタイム71は、図1Cの各JAVA(登録商標)仮想マシーン72又はマシーンJVM#1、JVM#2、...JVM#n上でJAVA(登録商標)アプリケーション50の矢印75A又は75Bで示されるロード処理中にオペレーションに入る。読者が特定の実施例の利益を得ることができるように、JAVA(登録商標)言語及びJAVA(登録商標)仮想マシーンに対して多くの実施例及び説明が提供されるが、本発明は、JAVA(登録商標)言語又はJAVA(登録商標)仮想マシーンのいずれか、或いは他の何らかの言語、仮想マシーン、マシーン又はオペレーティング環境に限定されないことは、本明細書に提示される説明に照らせば理解されるであろう。   In FIGS. 1B and 1C, the application code 50 cooperates with the distributed runtime system 71 via a load process indicated by arrows 75 or 75A or 75B, and Java virtual machines M1, M2,. . . Loaded into Mn. As used herein, the terms “distributed runtime” and “distributed runtime system” are synonymous in nature and are described by way of illustration and not limitation in a particular language running on a particular platform. It is generally understood to include library code and processes that support the configured software. In addition, the distributed runtime system can also include library code and processes that support software written in a particular language running within a particular distributed computing environment. A runtime system (whether or not a distributed runtime system) typically handles the details of the interface between the program and the operating system, such as system calls, program startup and termination, and memory management. . For background purposes, a conventional distributed computing environment (DCE) (which does not provide the functionality of the distributed runtime or distributed runtime system 71 of the present invention used in the preferred embodiment of the present invention) is Open Software Foundation. Is available from Although this distributed computing environment (DCE) implements a form of computer-to-computer communication for software running on a machine, it cannot perform the necessary modifications or communication operations, among many limitations. Among its functions and operations, the preferred DRT 71 includes a plurality of machines M1, M2,. . . Coordinate specific communication between Mn. In addition, the preferred distributed runtime 71 includes each JAVA virtual machine 72 or machine JVM # 1, JVM # 2,. . . Operation is entered during the load process indicated by arrow 75A or 75B of JAVA application 50 on JVM # n. Although many embodiments and descriptions are provided for the JAVA® language and JAVA® virtual machine so that the reader can benefit from the specific embodiments, the present invention provides a Java It is understood in light of the description presented herein that it is not limited to either a registered language or JAVA virtual machine, or any other language, virtual machine, machine or operating environment. Will.

図1Cは、図1Bに各々が示されるJAVA(登録商標)仮想マシーンの構成を修正された形式で示している。この場合も同じアプリケーションコード50が各マシーンM1、M2...Mnにロードされることは明らかであろう。しかしながら、矢印83で示されている各マシーンM1、M2、...Mn間の通信は、マシーンハードウェアを介して物理的にルート指定されるが、各マシーン内の個々のDRT71/1...71/nによって制御されるのが有利である。従って、実際にはこれは、これら自体又は互いに直接通信するマシーンM1、M2...Mnではなく、ネットワーク又は他の通信リンク53を介して互いに通信するDRT71/1,...71/nとして概念化することができる。マシーンM1、M2...Mn又はDRT71/1,71/2...71/n間のこの直接通信、或いはこのような通信の組合せのいずれかが企図され含まれる。好ましいDRT71は、トランスポート、プロトコル、及びリンクが独立した通信を提供する。   FIG. 1C shows the configuration of the JAVA® virtual machine, each shown in FIG. 1B, in a modified form. Also in this case, the same application code 50 is assigned to each machine M1, M2,. . . It will be apparent that Mn is loaded. However, each machine M1, M2,. . . Communication between Mn is physically routed through the machine hardware, but the individual DRTs 71/1. . . It is advantageously controlled by 71 / n. Therefore, in practice this means that the machines M1, M2. . . DRTs 71/1,... That communicate with each other via a network or other communication link 53 instead of Mn. . . It can be conceptualized as 71 / n. Machine M1, M2. . . Mn or DRT 71/1, 71/2. . . Either this direct communication between 71 / n or a combination of such communications is contemplated and included. The preferred DRT 71 provides transport, protocol, and link independent communication.

1つの共通アプリケーションプログラム又はアプリケーションコード50及びその実行可能バージョン(場合によっては修正のある)は、複数のコンピュータ又はマシーンM1、M2...Mn全体で同時に又は並行して実行している。アプリケーションプログラム50は、単一のマシーン又はコンピュータ上で実行するように(或いは、単一のコンピュータオペレーションをエミュレートする上述の特許出願のマルチコンピュータシステム上で動作するように)記述されている。本質的には、修正された構造は、個々のマシーンの各々上で同一のメモリ構造及びコンテンツを複製するものである。   One common application program or application code 50 and its executable version (possibly modified) may be stored in a plurality of computers or machines M1, M2,. . . The entire Mn is executed simultaneously or in parallel. Application program 50 is described to run on a single machine or computer (or to run on the multi-computer system of the above-mentioned patent application that emulates a single computer operation). In essence, the modified structure duplicates the same memory structure and content on each individual machine.

用語「共通アプリケーションプログラム」は、単一のマシーン上で動作するよう記述され、複数のコンピュータ又はマシーンM1、M2...Mnの各々全体又は一部で、或いは任意選択的に複数のコンピュータ又はマシーンM1、M2...Mnのあるサブセットの各々でロード及び/又は実行されるアプリケーションプログラム又はアプリケーションプログラムコードを意味すると理解すべきである。言い換えると、アプリケーションコード50において表された共通アプリケーションプログラムが存在する。これは、各々が個々に修正されてアプリケーションプログラム又はプログラムコードの修正されたコピー又はバージョンを生成する、単一のコピー又は複数の同一コピーのいずれかである。次いで、各コピー又はインスタンスは、対応するマシーン上で実行する準備がなされている。これらが修正された後の時点では、これらは、同様のオペレーションを実施し、互いに一貫性があり且つ整合性があるように動作する点で共通である。任意選択的に、本発明の実施形態を実施する複数のコンピュータ、マシーン、情報アプライアンス、又は同様のものは、本発明の実施形態を実施していない他のコンピュータ、マシーン、情報アプライアンス、又は同様のものと接続或いは結合することができることは理解されるであろう。   The term “common application program” is written to run on a single machine and includes a plurality of computers or machines M1, M2,. . . Mn in whole or in part, or optionally a plurality of computers or machines M1, M2. . . It should be understood to mean an application program or application program code that is loaded and / or executed on each subset of Mn. In other words, there is a common application program represented in the application code 50. This is either a single copy or multiple identical copies, each individually modified to produce a modified copy or version of the application program or program code. Each copy or instance is then ready to run on the corresponding machine. At a point after they have been modified, they are common in that they perform similar operations and operate to be consistent and consistent with each other. Optionally, a plurality of computers, machines, information appliances, or the like that implement embodiments of the present invention, other computers, machines, information appliances, or the like that do not implement embodiments of the present invention It will be understood that it can be connected or coupled to things.

同じアプリケーションプログラム50(例えば、並列マージソート、又は計算流体力学アプリケーション、又はデータマイニングアプリケーション)は、各マシーン上で実行されるが、当該アプリケーションプログラムの実行可能コードは、必要に応じて各マシーン上で修正され、各マシーン上の各実行インスタンス(コピー又は複製)が、他のマシーン上のそれぞれのインスタンス(又はコピー又は複製)のオペレーションと当該特定のマシーン上のローカルオペレーションを調整し、これらが、一貫性があり且つ整合性のある調整された様態で共に機能し、アプリケーションの1つのグローバルインスタンス(すなわち、「メタ−アプリケーション」)であるように見せる。   The same application program 50 (eg, a parallel merge sort, or computational fluid dynamics application, or data mining application) is run on each machine, but the executable code for that application program is run on each machine as needed. Modified, each execution instance (copy or duplicate) on each machine coordinates the operation of the respective instance (or copy or duplicate) on the other machine with the local operation on that particular machine, which is consistent It works together in a coordinated manner that is consistent and consistent, and appears to be one global instance of an application (ie, a “meta-application”).

同じ又は実質的に同じアプリケーションコードのコピー又は複製は各々、相互運用し且つ接続されたマシーン又はコンピュータの対応するコンピュータにロードされる。各マシーン又はコンピュータの特徴は異なる可能性があるので、アプリケーションコード50は、ロード前、又はロードプロセス中に修正し、或いは、幾つかの欠点はあるが、ロードプロセス後に修正し、各マシーン上でのアプリケーションコードのカスタマイズしたもの又は修正物を提供することができる。種々のマシーン上のプログラム又はアプリケーションコード間の何らかの相違点は、本明細書で説明される相互運用性、一貫性、及び整合性に対する他の要件が維持可能な限り許容することができる。以下で明らかになるように、マシーンM1、M2...Mnの各々、及びすなわち、マシーンM1、M2...Mnの全てが、同じ又は実質的に同じアプリケーションコード50を有し、通常は、マシーン固有とすることができる修正を伴う。   Each copy or duplicate of the same or substantially the same application code is loaded into a corresponding computer of the interoperating and connected machine or computer. Because the characteristics of each machine or computer can be different, the application code 50 can be modified before loading or during the loading process, or modified after the loading process, with some drawbacks, on each machine. A customized or modified version of the application code can be provided. Any differences between the programs or application code on the various machines can be tolerated as long as other requirements for interoperability, consistency, and consistency described herein can be maintained. As will become apparent below, the machines M1, M2. . . Mn, and in other words, the machines M1, M2. . . All of the Mn have the same or substantially the same application code 50, usually with modifications that can be machine specific.

各マシーンM1、M2...Mn上でのアプリケーションコード50(又はその関連部分)のロード前、又はロード中、又は実行の前のあらゆる時点で、各アプリケーションコード50は、同じ規則(又は僅かな最適化変更が各モディファイア51/1、51/2...51/n内で許容されているので実質的に同じ規則)に従って対応するモディファイア51によって修正される。   Each machine M1, M2. . . At any point before or during loading of application code 50 (or related parts) on Mn, or before execution, each application code 50 has the same rules (or slight optimization changes for each modifier 51). / 1, 51/2... 51 / n so that it is modified by the corresponding modifier 51 according to substantially the same rule).

マシーンM1、M2...Mnの各々は、同じ(又は実質的に同じ又は類似の)モディファイア51(幾つかの実施形態では、分散型ランタイム又はDRT71として実装され、他の実施形態では、アプリケーションコード及びデータ50への添付物として実装され、更に、JAVA(登録商標)仮想マシーン自体内に実装することができる)で動作する。従って、マシーンM1、M2...Mnの全ては、必要とされる各修正に対して同じ(又は実質的に同じ又は類似の)モディファイア51を有する。例えば、メモリ管理及び複製のため、初期化のため、ファイナライズのため、及び/又は同期化のために、別の修正が必要になる可能性がある(但し、全ての実施形態において、これらの修正タイプの全てが必要とされるわけではない)。   Machine M1, M2. . . Each Mn is implemented as the same (or substantially the same or similar) modifier 51 (in some embodiments, as a distributed runtime or DRT 71, in other embodiments, attached to application code and data 50) And can be implemented in a JAVA virtual machine itself). Accordingly, the machines M1, M2. . . All of the Mn have the same (or substantially the same or similar) modifier 51 for each modification required. For example, other modifications may be required for memory management and replication, for initialization, for finalization, and / or for synchronization (although in all embodiments these modifications may be required) Not all types are required).

モディファイア51及び分散型ランタイム71の別の実施が存在する。例えば、図1Cの破線によって示されるように、モディファイア51は、分散型ランタイム71のコンポーネントとして、又はこの内部に実装することができ、従ってDRT71は、モディファイア51の機能及びオペレーションを実施することができる。或いは、モディファイア51の機能及びオペレーションは、コード及びデータ50内、又はJAVA(登録商標)仮想マシーン自体内など、DRT71を実装するのに使用される構造、ソフトウェア、ファームウェア、又は他の手段の外部で実施することができる。1つの実施形態では、モディファイア51及びDRT71の両方が、DRT及びモディファイアの機能を提供する単一のコンピュータプログラムコードに実装され又は記述される。この場合、モディファイア機能及び構造は、実際にはDRTに含まれる。どのように実装されるかに関係なく、モディファイア機能及び構造は、アプリケーションコードプログラムの実行可能なコードを修正する役割を担い、分散型ランタイム機能及び構造は、コンピュータ又はマシーン間の通信を実施する役割を担う。1つの実施形態における通信機能は、各マシーン上のDRTのコンピュータプログラムコード内の中間プロトコルレイヤを介して実施される。DRTは、例えば、JAVA(登録商標)言語で通信スタックを実施することができ、送信制御プロトコル/インターネットプロトコル(TCP/IP)を使用して、マシーン間の通信又は通話を提供することができる。これらの機能又はオペレーションは、多様な方法で実施することができ、本明細書に提供される説明の観点から、これらの機能又はオペレーションが構造及び/又は手順要素間、或いはコンピュータプログラムコード又はデータ構造間に厳密にどのように実施又は分割されるかについては、本発明には重要ではなく、不可欠なものでもない点は理解されるであろう。   There are other implementations of modifier 51 and distributed runtime 71. For example, as indicated by the dashed line in FIG. 1C, the modifier 51 can be implemented as a component of or within the distributed runtime 71, so that the DRT 71 performs the functions and operations of the modifier 51. Can do. Alternatively, the functions and operations of the modifier 51 are external to the structure, software, firmware, or other means used to implement the DRT 71, such as in the code and data 50, or in the JAVA virtual machine itself. Can be implemented. In one embodiment, both modifier 51 and DRT 71 are implemented or described in a single computer program code that provides DRT and modifier functionality. In this case, the modifier function and structure are actually included in the DRT. Regardless of how it is implemented, modifier functions and structures are responsible for modifying the executable code of application code programs, and distributed runtime functions and structures perform communication between computers or machines. Take a role. The communication functions in one embodiment are implemented through an intermediate protocol layer in the DRT computer program code on each machine. The DRT can implement a communication stack, for example, in the JAVA language, and can provide communication or call between machines using Transmission Control Protocol / Internet Protocol (TCP / IP). These functions or operations may be implemented in a variety of ways, and in view of the description provided herein, these functions or operations may be between structures and / or procedural elements, or computer program code or data structures. It will be appreciated that the exact implementation or division in between is not critical to the invention and is not essential.

しかしながら、図1に示された構成では、複数の個々のコンピュータ又はマシーンM1、M2...Mnが提供され、その各々は、通信ネットワーク53又は他の通信リンクを介して相互接続される。各個々のコンピュータ又はマシーンは、対応するモディファイア51を備える。各個々のコンピュータはまた、通信ネットワークに接続する通信ポートを備えている。通信ネットワーク53又は経路は、いずれかの電子信号方式、データ、又はデジタル通信ネットワーク又は経路とすることができ、インターネットを介したネットワーク接続、或いはETHERNET(登録商標)又はINFINIBAND及びこれらの拡張及び改良を含む何らかの共通ネットワーク構成といった、低速で、従って低コストの通信経路であるのが好ましい。好ましくは、コンピュータは、通信ネットワーク53に接続する1つ又はそれ以上の公知の通信ポート(CISCO Power Connect 5224 Switchなど)を備えている。   However, in the configuration shown in FIG. 1, a plurality of individual computers or machines M1, M2,. . . Mn is provided, each of which is interconnected via communication network 53 or other communication link. Each individual computer or machine has a corresponding modifier 51. Each individual computer also includes a communication port that connects to a communication network. The communication network 53 or path can be any electronic signaling, data, or digital communication network or path, including network connection over the Internet, or ETHERNET® or INFINIBAND and extensions and improvements thereof. A low speed and thus low cost communication path is preferred, such as some common network configuration. Preferably, the computer has one or more known communication ports (such as CISCO Power Connect 5224 Switch) that connect to the communication network 53.

上述の構成の結果として、マシーンM1、M2、...、Mnの各々が、例えば、10MBの内部又はローカルメモリ容量を有する場合、全体としてアプリケーションコード50に利用可能な総メモリは、予想されるようにマシーンの数(n)×10MBではない。これは、n個のマシーン全ての内部メモリ容量の加法的な組合せでもない。そうではなく、10MBか、又は10MBよりも大きいがn×10MBよりも小さいある数である。マシーンの内部メモリ容量が異なる場合、これは許容可能であり、ひいては1つのマシーンの内部メモリが、マシーンの少なくとも1つの他のマシーンの内部メモリ容量よりも小さい場合には、マシーンのいずれかの最も小さなメモリのサイズは、このようなメモリ(又はその一部)が「共通」メモリ(すなわち、マシーンM1...Mnの各々の類似の等価メモリ)として扱われるとき、又は共通アプリケーションコードを実行するのに使用されるときに、マシーンの最大メモリ容量として用いることができる。   As a result of the above configuration, the machines M1, M2,. . . , Mn each has, for example, 10 MB of internal or local memory capacity, the total memory available to the application code 50 as a whole is not the number of machines (n) × 10 MB as expected. This is not an additive combination of the internal memory capacity of all n machines. Rather, it is 10 MB, or some number that is larger than 10 MB but smaller than n × 10 MB. This is acceptable if the internal memory capacity of the machine is different, and thus if the internal memory capacity of one machine is smaller than the internal memory capacity of at least one other machine of the machine, A small memory size allows such memory (or a portion thereof) to be treated as “common” memory (ie, similar equivalent memory for each of the machines M1... Mn) or to execute common application code. Can be used as the maximum memory capacity of the machine.

しかしながら、各マシーンの内部メモリが処理される方式は、当初は性能に関する潜在的な制約となる可能性があるが、これがどのような改良されたオペレーション及び性能をもたらすかについては以下で明らかになるであろう。当然、各マシーンM1、M2...Mnは、プライベート(すなわち、「非共通の」)内部メモリ容量を有する。マシーンM1、M2、...、Mnのプライベート内部メモリ容量は通常はほぼ等しいが、必須ではない。例えば、マルチコンピュータシステムが、異なるエンティティによって所有又は操作される既存のコンピュータ、マシーン、又は情報アプライアンスを使用して実施又は編成されている場合、内部メモリ容量は全く異なる場合がある。他方、新しいマルチコンピュータシステムが実装されている場合、各マシーン又はコンピュータは、同一の内部メモリ容量を有するように選択されるのが好ましいが、これは必須ではない。   However, the way in which each machine's internal memory is processed may initially be a potential performance constraint, but it will become clear below what improved operation and performance this will bring. Will. Of course, each machine M1, M2. . . Mn has a private (ie, “non-common”) internal memory capacity. Machines M1, M2,. . . , Mn's private internal memory capacity is usually approximately equal, but not required. For example, if a multi-computer system is implemented or organized using existing computers, machines, or information appliances owned or operated by different entities, the internal memory capacity may be quite different. On the other hand, if a new multi-computer system is implemented, each machine or computer is preferably selected to have the same internal memory capacity, but this is not required.

各マシーンの独立したローカルメモリは、そのマシーン上で実行されるアプリケーションプログラムの当該部分に割り当てられたマシーンの総メモリの当該部分だけを表わしている点は理解されるべきである。従って、他のメモリは、アプリケーションプログラム50に関係のないマシーンのオペレーティングシステム及び他のコンピューテーションタスクが占有することになる。   It should be understood that each machine's independent local memory represents only that portion of the machine's total memory allocated to that portion of the application program running on that machine. Thus, other memory is occupied by the machine's operating system and other computing tasks unrelated to the application program 50.

プロトタイプマルチコンピュータシステムの非商用オペレーションは、システム内のあらゆるマシーン又はコンピュータが、あらゆる可能なメモリロケーション(例えば、そのローカル複製を有する)を利用しないか、或いはこれを参照する必要がないことを示す。結果として、各マシーンのローカルメモリが当該マシーンのオペレーションに十分である限り、何らかの他のマシーンに同一の各マシーンのローカルメモリがなくともマルチコンピュータシステムを動作させることが可能となる。すなわち、特定のマシーンが、幾つかの特定のメモリロケーション(例えばそのローカル複製を有する)を参照する必要がない場合、その特定のメモリロケーションが当該特定のマシーンにおいて複製されないことは問題ではない。   Non-commercial operation of a prototype multi-computer system indicates that every machine or computer in the system does not use or need to reference every possible memory location (eg, having its local replica). As a result, as long as the local memory of each machine is sufficient for the operation of the machine, the multicomputer system can be operated without any other machine having the same local memory of each machine. That is, if a particular machine does not need to reference some particular memory location (eg, having its local replica), it does not matter that that particular memory location is not replicated on that particular machine.

また、各マシーンにおいて及び接続され又は結合された複数のマシーン、コンピュータ、又は情報アプライアンスM1、M2、...、Mnのコンステレーション又はネットワーク全体にわたって、所望の性能レベルを達成するように各マシーンの内部メモリ量を選択することが有利とすることができる。記載されたこれらの内部及び共通メモリを考慮すると、マシーン間に共通とすることができるメモリ量に制限がないことは、本明細書に示される説明に照らせば明らかであろう。   Also, a plurality of machines, computers or information appliances M1, M2,. . . , It may be advantageous to select the amount of internal memory for each machine to achieve the desired level of performance across the Mn constellation or network. In view of these described internal and common memories, it will be apparent in light of the description provided herein that there is no limit to the amount of memory that can be common between machines.

幾つかの実施形態では、複数の個々のコンピュータ又はマシーンの一部又は全ては、単一のハウジング又はシャーシ(Hewlett−Packard Development Company、Intel Corporation、IBM Corporationなどによって製造された、いわゆる「ブレードサーバー」など)、或いは、インテル、AMD、又はその他によって製造され、もしくは単一のプリント基板又は単一のチップ又はチップセット内に実装されたマルチプロセッサ(例えば、対称マルチプロセッサ又はSMP)又はマルチコアプロセッサ(例えば、デュアルコアプロセッサ及びチップマルチスレッディングプロセッサ)内に包含することができる。同様に、マルチコア、マルチCPU、又は他の処理論理回路を有するコンピュータ又はマシーンも含まれる。   In some embodiments, some or all of a plurality of individual computers or machines may be a single housing or chassis (a so-called “blade server” manufactured by Hewlett-Packard Development Company, Intel Corporation, IBM Corporation, etc.). Or a multiprocessor (eg, symmetric multiprocessor or SMP) or multicore processor (eg, symmetric multiprocessor or SMP) manufactured by Intel, AMD, or others, or implemented in a single printed circuit board or a single chip or chipset , Dual core processor and chip multithreading processor). Similarly, a computer or machine having a multi-core, multi-CPU, or other processing logic is included.

非JAVA(登録商標)言語又はアプリケーションコード環境で実施されるときには、一般化されたプラットフォーム、及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステムは、当該プラットフォーム及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステム環境の言語(例えば、限定ではないが、ソース−コード言語、中間−コード言語、オブジェクト−コード言語、マシーン−コード言語、及びいずれかの他のコード言語のいずれか1つ又はそれ以上を含む場合がある)でアプリケーションコード50を動作させ、マシーン又はプロセッサ製造業者及びマシーンの内部詳細に関係なく、プラットフォーム、及び/又は仮想マシーン及び/又はマシーン及び/又はランタイムシステム及び/又は言語アーキテクチャを利用することができる。プラットフォーム及び/又はランタイムシステムが、仮想マシーン及び非仮想マシーンソフトウェア及び/又はファームウェアアーキテクチャ、並びにハードウェア及び直接ハードウェアコード化アプリケーション及び実装を含むことができる点は理解されるであろう。   When implemented in a non-Java® language or application code environment, a generalized platform and / or virtual machine and / or machine and / or runtime system may be the platform and / or virtual machine and / or machine. And / or the language of the runtime system environment (e.g., without limitation, any one of the source-code language, intermediate-code language, object-code language, machine-code language, and any other code language or The application code 50 may run on the platform and / or virtual machine and / or machine and / or runtime system and / or language regardless of the machine or processor manufacturer and internal details of the machine It is possible to use the architecture. It will be appreciated that the platform and / or runtime system may include virtual and non-virtual machine software and / or firmware architecture, and hardware and direct hardware coding applications and implementations.

仮想マシーン又は抽象マシーン環境のより一般的なセットにおいて、並びに現在及び将来のコンピュータ及び/又はコンピュータマシーン及び/又は情報アプライアンス又は処理システムにおいて、クラス及び/又はオブジェクトのいずれかを利用しない、或いは利用を必要としない場合があるが、本発明の構造、方法、及びコンピュータプログラム及びコンピュータプログラム製品は依然として適用可能である。クラス及び/又はオブジェクトのいずれかを利用しないコンピュータ及び/又はコンピュータマシーンの実施例は、例えば、Intel Corporation及びその他によって製造された×86コンピュータアーキテクチャ、Sun Microsystems,Inc及びその他によって製造されたSPARCコンピュータアーキテクチャ、International Business Machines Corporation及びその他によって製造されたPower PCコンピュータアーキテクチャ、及びApple Computer, Inc及びその他によって製作されたパーソナルコンピュータ製品を含む。   Do not use or use any of the classes and / or objects in a more general set of virtual or abstract machine environments and in current and future computers and / or computer machines and / or information appliances or processing systems Although not required, the structure, method, and computer program and computer program product of the present invention are still applicable. Examples of computers and / or computer machines that do not utilize either classes and / or objects include, for example, x86 computer architecture manufactured by Intel Corporation and others, SPARC computer architecture manufactured by Sun Microsystems, Inc and others. And Power PC computer architecture manufactured by International Business Machines Corporation and others, and personal computer products manufactured by Apple Computer, Inc and others.

クラス又はオブジェクトの概念を利用せずに実装されたコンピュータ、コンピュータマシーン、情報アプライアンス、及び仮想マシーン又は仮想コンピュータ環境のこれらのタイプでは、例えば、手続き型言語又は他の言語についての基本データタイプ(整数データタイプ、浮動小数点データタイプ、長データタイプ、ダブルデータタイプ、ストリングデータタイプ、文字データタイプ、及びブールデータタイプなど)、構造化データタイプ(アレイ及びレコードなど)、派生タイプ、又は他のコードもしくはデータ構造を含み、関数、ポインタ、コンポーネント、モジュール、構造、リファレンス、及びユニオンなどの環境を含むように一般化することができる。必要なときに組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーンM1、M2...Mnにわたって調整され整合性があり且つ一貫性のあるようにして作成、維持、動作、及び非動作もしくは削除が行われるコンピュータ環境を維持する。   In these types of computers, computer machines, information appliances, and virtual machines or virtual computer environments implemented without using the concept of classes or objects, for example, a basic data type (integer for procedural languages or other languages) Data types, floating point data types, long data types, double data types, string data types, character data types, and Boolean data types), structured data types (such as arrays and records), derived types, or other codes or Contains data structures and can be generalized to include environments such as functions, pointers, components, modules, structures, references, and unions. These structures and procedures applied in combination when needed may require a memory location, address range, object, class, asset, resource, or any other procedure or structural aspect of the computer or computing environment. In some cases, a plurality of individual machines M1, M2. . . Maintain a computing environment that is coordinated across Mn, created, maintained, operated, and deactivated or deleted in a consistent and consistent manner.

アプリケーションコード50のこの分析又は精査は、アプリケーションプログラムコード50のロードの前、又はアプリケーションプログラムコード50ロード処理中、又はアプリケーションプログラムコード50ロード処理の後(或いはこれらのある組合せ)でも行なうことができる。これは、アプリケーションコードが、付加的な命令を備え、及び/又は他の場合には、意味保護プログラムマニピュレーションによって修正され、及び/又は任意選択的に入力コード言語から異なるコード言語に翻訳(例えばソース−コード言語又は中間−コード言語からオブジェクト−コード言語又はマシーン−コード言語)することができる点で、インストゥルメンテーション、プログラム変換、翻訳、又はコンパイル手続きに形容することができる。この文脈では、用語「「コンパイル」は、通常又は従来的に、コード又は言語における変更、例えばソースコードからオブジェクトコード又は1つの言語から別の言語への変更を包含することは理解される。しかしながら、本発明では、用語「コンパイル」(及びその文法上等価な語句)はこれに限定されず、同じコード又は言語内の修正をも含む又は包含することができる。例えば、コンパイル及びその等価な語句は、通常のコンパイル(例えば、限定ではなく例証として、ソース−コードからオブジェクトコードになど)と、ソース−コードからソース−コードへのコンパイル、並びにオブジェクト−コードからオブジェクトコードへのコンパイル、及びいずれかの変更された組合せを包含することは理解される。「疑似オブジェクト−コード」の形式のいわゆる「中間−コード言語」も含まれる。   This analysis or scrutiny of the application code 50 can also be performed before the application program code 50 is loaded, during the application program code 50 loading process, or after the application program code 50 loading process (or some combination thereof). This is because the application code comprises additional instructions and / or is otherwise modified by semantic protection program manipulation and / or optionally translated from the input code language to a different code language (eg source It can be described as instrumentation, program conversion, translation, or compilation procedures in that it can be converted from a code language or an intermediate-code language to an object-code language or machine-code language. In this context, it is understood that the term “compile” usually or conventionally encompasses changes in code or language, such as changes from source code to object code or from one language to another. However, in the present invention, the term “compile” (and its grammatically equivalent phrases) is not limited to this, and can include or include modifications within the same code or language. For example, compilation and its equivalent phrases include normal compilation (eg, by way of example and not limitation, source-code to object code, etc.), source-code to source-code compilation, and object-code to object. It is understood to encompass compilation into code and any modified combinations. Also included are so-called “intermediate-code languages” in the form of “pseudo-object-code”.

限定ではなく例証として、1つの実施形態では、アプリケーションコード50の分析又は精査は、オペレーティングシステムがハードディスクもしくは他の記憶デバイス、媒体、又はソースからアプリケーションコード50を読み取り、これをメモリにコピーしてアプリケーションプログラムコードの実行を始める準備をすることなどによって、アプリケーションプログラムコードのロード中に行なわれる。別の実施形態では、JAVA(登録商標)仮想マシーンにおいて、分析又は精査は、java(登録商標).lang.ClassLoader.loadClass method(例えば「java(登録商標).lang.ClassLoader.loadClass()」)のクラスロード処理中に行なうことができる。   By way of example and not limitation, in one embodiment, the analysis or review of application code 50 is such that the operating system reads application code 50 from a hard disk or other storage device, media, or source and copies it to memory for application This is done during loading of the application program code, such as by preparing to start executing the program code. In another embodiment, in a JAVA® virtual machine, the analysis or scrutiny is Java®. lang. ClassLoader. It can be performed during the class loading process of the loadClass method (for example, “java (registered trademark). lang. ClassLoader.loadClass ()”).

代替的に、又はこれに加えて、アプリケーションコード50(又はアプリケーションコードの一部)の分析又は精査は、オペレーションシステムがアプリケーションコードをメモリにロードした後など、アプリケーションプログラムコードロード処理後でも、或いは、例えば、JAVA(登録商標)仮想マシーンがアプリケーションコードを「java(登録商標).lang.ClassLoader.loadClass()」方法及び任意選択的に開始された実行を介して仮想マシーンにロードした後など、任意選択的にアプリケーションプログラムコードの関連した対応部分の実行が起動された後でも行うことができる。   Alternatively or in addition, analysis or review of application code 50 (or a portion of application code) may be performed after application program code loading processing, such as after the operating system has loaded application code into memory, or For example, after the JAVA® virtual machine has loaded the application code into the virtual machine via the “java®.lang.ClassLoader.loadClass ()” method and optionally initiated execution Alternatively, it can be performed even after execution of the corresponding part of the application program code is activated.

コンピュータ技術分野の当業者であれば、限定ではないが、インストゥルメンテーション、プログラム変換、翻訳、又はコンパイル手段及び/又は方法を含む、コンピュータコードの修正に使用できる種々の実施可能な技術を認識しているであろう。   Those skilled in the computer arts will recognize various possible techniques that can be used to modify computer code, including but not limited to instrumentation, program conversion, translation, or compilation means and / or methods. Will be.

1つのこのような技術は、アプリケーションコードの言語の先の変更又は結果として生じる変更を伴うことなくアプリケーションコードへの修正を行なうものである。別のこのような技術は、オリジナルコード(例えば、JAVA(登録商標)言語ソース−コード)をJAVA(登録商標)バイトコードなどの中間表現(又は中間−コード言語、又は疑似コード)に変換するものである。この変換が行なわれると、バイトコードに対し修正が行なわれ、その結果、変換を逆にすることができる。これは、改良されたJAVA(登録商標)コードの所望の結果をもたらす。   One such technique is to make modifications to the application code without any previous or resulting change in the language of the application code. Another such technique is to convert original code (eg, JAVA language source-code) into an intermediate representation (or intermediate-code language, or pseudocode) such as JAVA® bytecode. It is. When this conversion is performed, the bytecode is modified so that the conversion can be reversed. This yields the desired result of the improved JAVA code.

別の実施可能な技術は、アプリケーションプログラムをソース−コードから直接、或いは前述の中間言語を介して又は何らかの他の中間手段を介してマシーンコードに変換するものである。次に、マシーンコードは、ロード及び実行前に修正される。更に別のこのような技術は、オリジナルコードを修正した後マシーンコードに変換される中間表現に変換するものである。   Another possible technique is to convert the application program into machine code either directly from source-code or via the aforementioned intermediate language or via some other intermediate means. The machine code is then modified before loading and execution. Yet another such technique is to modify the original code into an intermediate representation that is then converted to machine code.

本発明は、全てのこのような修正ルート、及びこのようなルートの2つ、3つ、又はそれ以上の組合せをも包含する。   The present invention also encompasses all such modified routes and combinations of two, three or more such routes.

DRT71又は他のコード修正手段は、個々のマシーンM1、M2...Mnの各々に対してメモリ構造及びコンテンツを作成又は複製する役割を担い、これにより複数のマシーンの相互運用が可能になる。幾つかの実施形態では、この複製されたメモリ構造が同一となる。他の実施形態では、このメモリ構造は、同一である部分と、同一でない他の部分とを有することになる。更に他の実施形態では、メモリ構造は、Big Endian又はLittle Endianフォーマット又は規定など、フォーマット又は記憶規定のみが異なる。   The DRT 71 or other code modifying means can be used for each machine M1, M2,. . . Responsible for creating or replicating the memory structure and content for each of Mn, thereby enabling interoperability of multiple machines. In some embodiments, this replicated memory structure is the same. In other embodiments, the memory structure will have portions that are identical and other portions that are not identical. In yet other embodiments, the memory structure differs only in format or storage convention, such as Big Endian or Little Endian format or convention.

必要なときには組み合わせて適用されるこれらの構造及び手続きは、コンピュータ又はコンピュータ環境のメモリロケーション、アドレス範囲、オブジェクト、クラス、資産、資源、又はいずれかの他の手続き又は構造的態様が、必要な場合には、複数の個々のマシーンM1、M2...Mnにわたって調整され整合性があり且つ一貫性のあるようにして作成、維持、動作、及び非動作又は削除が行われるコンピュータ環境を維持する。   These structures and procedures that are applied in combination when needed are memory locations, address ranges, objects, classes, assets, resources, or any other procedure or structural aspect of a computer or computing environment Includes a plurality of individual machines M1, M2. . . Maintain a computing environment that is coordinated across Mn, created, maintained, operated, and deactivated or deleted in a consistent and consistent manner.

従って、用語「1つ」、「単一の」、及び「共通」のアプリケーションコード又はプログラムとは、全てのマシーンM1、M2...Mnが異なる(及び関係のない)プログラムではなく同じプログラム又はコードを動作又は実行しており、言い換えると、同じ又は実質的に同じアプリケーションコードのコピー又は複製が、相互運用し且つ接続されたマシーン又はコンピュータの各々にロードされる状況を含む。   Thus, the terms “one”, “single”, and “common” application code or program refer to all machines M1, M2,. . . Running or executing the same program or code rather than different (and unrelated) programs of Mn, in other words, copies or copies of the same or substantially the same application code are interoperable and connected machines or Includes the situation loaded on each of the computers.

分散型ソフトウェアを利用する従来の構成では、1つのマシーンのソフトウェアから別のマシーンに物理的に位置付けられたメモリへのメモリアクセスは通常、マシーンを相互接続しているネットワークを介して行なわれる。従って、各マシーンのローカルメモリは、いずれかの他のマシーンによってアクセスでき、従って、独立しているとはいえない。しかしながら、別のコンピュータ上に物理的に位置付けられたメモリへの読み取り及び/又は書き込みメモリアクセスは、コンピュータを相互接続している遅いネットワークの使用を必要とするので、これらの構成では、このようなメモリアクセスは、メモリ読み取り/書き込み処理オペレーションおいて、潜在的にはマシーンの中央処理ユニットの106−107サイクルのオーダー(最新のプロセッサ速度とした場合)のかなりの遅延を生じる可能性がある。最終的に、この遅延は、例えば通信ネットワークの速度、帯域幅、及び/又は待ち時間などの多数の要素に依存する。これは、主に、従来技術による構成における複数の相互接続されたマシーンの性能の低下の原因となる。 In conventional configurations utilizing distributed software, memory access from one machine's software to memory physically located on another machine is typically performed via a network interconnecting the machines. Thus, the local memory of each machine can be accessed by any other machine and is therefore not independent. However, read and / or write memory access to memory physically located on another computer requires the use of a slow network interconnecting the computers, so in these configurations such an Memory access can cause significant delays in memory read / write processing operations, potentially on the order of 10 6 -10 7 cycles of the machine's central processing unit (assuming the latest processor speed). . Ultimately, this delay depends on a number of factors, such as the speed, bandwidth, and / or latency of the communication network. This is mainly responsible for the performance degradation of multiple interconnected machines in prior art configurations.

しかしながら、本構成では、全メモリロケーション(又はその一部のサブセット)の現在値が、メモリ読み取りの要求を生じる処理を実行するマシーン上に記憶されるので、メモリロケーション又はデータの全ての読み取りはローカルで満たされる。   However, in this configuration, the current value of all memory locations (or a subset thereof) is stored on the machine executing the process that causes the memory read request, so that all reads of memory locations or data are local. Filled with.

同様に、全メモリロケーション(又はその一部のサブセット)の現在値が、メモリ書き込みの要求を生じる処理を実行するマシーン上に記憶されるので、メモリロケーション又はデータの全ての書き込みはローカルで満たされる。   Similarly, since the current values of all memory locations (or a subset thereof) are stored on the machine that performs the process that produces the memory write request, all writes of the memory location or data are satisfied locally. .

このようなローカルメモリ読み取り及び書き込み処理オペレーションは通常、中央処理ユニットの102−103サイクル内で満たされる。従って、実際には、包含及び/又は書き込みのメモリアクセスの待機が遙かに少ない。また、各マシーンのローカルメモリは、いずれかの他のマシーンがアクセスすることができず、従って、独立しているといえる。 Such local memory read and write processing operations are typically satisfied within 10 2 -10 3 cycles of the central processing unit. Thus, in practice, there is much less waiting for memory access for inclusion and / or writing. Also, the local memory of each machine cannot be accessed by any other machine and is therefore independent.

本発明は、トランスポート、ネットワーク、及び通信経路が独立しており、マシーン又はDRT間の通信がどのように行われるかには依存しない。1つの実施形態では、マシーン又はDRT間の電子メール(Eメール)交換でも通信には十分とすることができる。   The present invention is independent of transport, network, and communication paths and does not depend on how communication between machines or DRTs is performed. In one embodiment, an electronic mail (Email) exchange between machines or DRTs may be sufficient for communication.

上記に関連して、図1のアプリケーションプログラム50がほぼ同時に実行されている、2より大きいか又は等しい整数であるマシーンM1、M2、...Mnの数「n」が存在することが図2から分かるであろう。これらのマシーンには、階層順序で数1、2、3...などが割り当てられる。この順序は通常、マシーン2及び3が階層的に隣接し、マシーン「n」及び1も同様であるようにループ又は閉鎖されている。ロックサーバーとして動作するように、種々のハウスキーピング機能を実行できるように提供される別のマシーンXが存在することが好ましい。詳細には、別のマシーンXは、低価値のマシーンであり、プロセッサ速度などの所望の属性を有することができる他のマシーンよりも遙かに安価にすることができる。更に、マシーンXが故障した場合の冗長性を提供するために、付加的な低価値マシーン(X+1)が利用可能であるのが好ましい。2つのこのようなサーバーマシーンX及びX+1が提供された場合、これらは、簡単にするために、クラスタ構成でデュアルマシーンとして動作するのが好ましい。マシーンX及びX+1は、必要に応じて、本発明に従うマルチコンピュータシステムとして動作することができる。しかしながら、これは、一般に望ましくない複雑さをもたらすことになる。マシーンXが提供されない場合、ハウスキーピング機能などのマシーンXの機能は、他のマシーンの1つ、又は幾つか、或いは全てによって提供される。   In connection with the above, the machine program M1, M2,..., Which is an integer greater than or equal to 2, the application program 50 of FIG. . . It can be seen from FIG. 2 that there is a number “n” of Mn. These machines have the numbers 1, 2, 3. . . Etc. are assigned. This order is usually looped or closed so that machines 2 and 3 are hierarchically adjacent and machines “n” and 1 are similar. There is preferably another machine X that is provided to perform various housekeeping functions to operate as a lock server. In particular, another machine X is a low-value machine and can be much cheaper than other machines that can have desired attributes such as processor speed. In addition, an additional low value machine (X + 1) is preferably available to provide redundancy in case machine X fails. If two such server machines X and X + 1 are provided, they preferably operate as dual machines in a cluster configuration for simplicity. Machines X and X + 1 can operate as a multi-computer system according to the present invention, if desired. However, this generally results in undesirable complexity. If machine X is not provided, machine X functions such as housekeeping functions are provided by one, some, or all of the other machines.

ここで図3を参照すると、本図は、コンピュータシステムを構成する複数のマシーンのいずれか3つのマシーン、Mn−1、Mn、及びMn+1に対するメモリマップを示している。本明細書に組み込まれた上記の特許明細書に記載される初期化プロセスは、アプリケーションプログラムのオペレーションの開始前に行なわれ、従って、マシーンの各々のメモリコンテンツは、本質的に同一である。図示の特定の実施例では、各マシーンは、2つのオブジェクトA及びBを有し、各オブジェクトは、英数字データを記憶できる2つのプリミティブフィールド11を有する。与えられた特定の実施例では、オブジェクトAの2つのフィールドは、数字7及び9を包含し、オブジェクトBの2つのフィールドは、数字3及び5を包含する。   Referring now to FIG. 3, this figure shows a memory map for any three machines, Mn−1, Mn, and Mn + 1, of the plurality of machines that make up the computer system. The initialization process described in the above patent specification incorporated herein takes place prior to the start of operation of the application program, and therefore the memory content of each of the machines is essentially the same. In the particular embodiment shown, each machine has two objects A and B, and each object has two primitive fields 11 that can store alphanumeric data. In the particular example given, the two fields of object A contain the numbers 7 and 9, and the two fields of object B contain the numbers 3 and 5.

上述のように初期化された後、個々のコンピュータの各々は、アプリケーションプログラム5の異なる部分を実行する。各マシーンが、プリミティブフィールド及び非プリミティブフィールドの両方において記憶されることになる改訂データだけを生成することが予想される。このようなフィールドが、英数字データのみを包含するプリミティブフィールドである場合、これらのフィールドは容易にコピーされ、これによって他のマシーンの各々上に複製することができる。しかしながら、図4に示されるように、すなわちマシーンMnは、プリミティブフィールド11とは異なるので二重の境界線で示されるリファレンスフィールド10を有する状況が生じる可能性がある。   After being initialized as described above, each individual computer executes a different part of the application program 5. It is expected that each machine will only generate revision data that will be stored in both primitive and non-primitive fields. If such fields are primitive fields that contain only alphanumeric data, these fields can be easily copied and thereby replicated on each of the other machines. However, as shown in FIG. 4, i.e., the machine Mn is different from the primitive field 11, so a situation may occur having a reference field 10 indicated by a double border.

マシーンMnのオブジェクトAの内部には、フィールド10、11、及び12があり、該フィールドは、マシーンMn−1のオブジェクトA内の対応するフィールド30、31、及び32と、マシーンMn+1のオブジェクトA内の対応するフィールド20、21、及び22とを有する。   Inside the object A of the machine Mn, there are fields 10, 11, and 12, which correspond to the corresponding fields 30, 31, and 32 in the object A of the machine Mn-1 and in the object A of the machine Mn + 1. Corresponding fields 20, 21, and 22.

この特定の実施例において、新しいリファレンスフィールド10は、これ自体が2つのプリミティブフィールド11を含む付加的なオブジェクトHへのリファレンスを包含する。図4において、リファレンスフィールド10内には、参照されるオブジェクトの名前Hと、リファレンスフィールド10のコンテンツがプログラムをリダイレクトして、オブジェクトAからオブジェクトHに移動させるようにすることを示す矢印とが共に示されている。従って、コンピュータシステムが実質的に整合性のあるメモリを維持できるように、マシーンMnで生じたメモリ変更を他のマシーン全てに複製する方法に関して問題が生じる。   In this particular embodiment, the new reference field 10 contains a reference to an additional object H that itself contains two primitive fields 11. In FIG. 4, the reference field 10 includes both the name H of the referenced object and an arrow indicating that the content of the reference field 10 redirects the program to move from the object A to the object H. It is shown. Thus, problems arise with respect to how the memory changes that occurred on the machine Mn are replicated to all other machines so that the computer system can maintain a substantially consistent memory.

図4に示されるように、マシーンMn−1に関連して、オブジェクトA内にリファレンスフィールド30を有することができるが、マシーンMnのリファレンスフィールド10が参照するオブジェクトHはマシーンMn−1内に存在しないので、これでは不十分である。或いは、マシーンMn+1について示されるように、オブジェクトA内のリファレンスフィールド20を有し、且つマシーン内に新しいオブジェクトを作成することもできるが、マシーン編成は一般に異なり、従って、マシーンMn+1内に作成された新しいオブジェクトのポインタ(又はアドレス)は、マシーンMn内に作成されたオブジェクトHのポインタ(又はアドレス)と同じではない。   As shown in FIG. 4, in relation to the machine Mn-1, the object A can have a reference field 30, but the object H to which the reference field 10 of the machine Mn refers exists in the machine Mn-1. This is not enough. Alternatively, as shown for machine Mn + 1, it is possible to have a reference field 20 in object A and create a new object in the machine, but the machine organization is generally different and thus created in machine Mn + 1. The pointer (or address) of the new object is not the same as the pointer (or address) of the object H created in the machine Mn.

所望の最終結果が図5に示されている。ここで、リファレンスフィールド10及び付加的なオブジェクトHを有していたマシーンMnは以前と同じである。しかしながら、マシーンMn+1については、オブジェクトAはリファレンスフィールド20を備えており、該フィールドのコンテンツは、マシーンMn+1のローカルメモリ内に作成され、且つマシーンNのオブジェクトHに対応する新しいオブジェクトTを参照する。同様に、マシーンMn−1は、オブジェクトAに対し、フィールド10に対応するリファレンスフィールド30を有し、該フィールドのコンテンツは、マシーンMn−1のローカルメモリ内に作成され、且つマシーンMnのオブジェクトHに対応する新しいオブジェクトKを参照する。   The desired end result is shown in FIG. Here, the machine Mn having the reference field 10 and the additional object H is the same as before. However, for machine Mn + 1, object A has a reference field 20 whose contents are created in the local memory of machine Mn + 1 and refer to a new object T corresponding to object H of machine N. Similarly, the machine Mn-1 has a reference field 30 corresponding to the field 10 for the object A, and the contents of the field are created in the local memory of the machine Mn-1 and the object H of the machine Mn. A new object K corresponding to is referred to.

図5に示された所望の結果は、図6に示されるようなコンコーダンステーブルを使用して作成される。このようなコンコーダンステーブルは、サーバーマシーンX内に記憶されるのが好ましく好都合であり、従って、他のマシーン全てがアクセス可能である。図6のコンコーダンステーブルにおいて、参照されたオブジェクトH(この実施例の目的において、好都合には、人間の頭に関するアプリケーションプログラム50の態様に関係付けられると仮定することができ、グローバル名称C(好都合には、ラテン語で頭を意味するcraniumを表わす)を割り当てられる)の作成によって、Hのローカルポインタ(又はアドレス)は一般にグローバル名称Cとは異なることは理解される。   The desired result shown in FIG. 5 is created using a concordance table as shown in FIG. Such a concordance table is preferably stored in the server machine X and is therefore accessible to all other machines. In the concordance table of FIG. 6, it can be assumed that the referenced object H (for the purposes of this example, conveniently relates to the aspect of the application program 50 relating to the human head, the global name C (conveniently It is understood that the local pointer (or address) of H is generally different from the global name C by the creation of (represented cranium meaning head in Latin).

マルチコンピュータシステムにおける他のマシーンの各々について、新しいオブジェクトに対するローカルポインタ(又はアドレス)を作成する必要があり、グローバル名称Cに対応する図6のコンコーダンステーブルに次に入力される。マシーンMn−1について、新しいオブジェクトのローカルアドレスは、K(ドイツ語で頭を意味するKopfを表わす)と呼ばれるのが好都合であり、マシーンMn+1については、ローカルアドレスは、T(フランス語で頭を意味するteteを表わす)であるのが好都合である。   For each of the other machines in the multicomputer system, a local pointer (or address) for the new object needs to be created and then entered into the concordance table of FIG. For machine Mn-1, the local address of the new object is conveniently called K (for Kopf, which means head in German), and for machine Mn + 1, the local address is T (for French, meaning head). It is convenient to represent tete).

オブジェクトH、T、及びKは、図6のコンコーダンステーブルを介して全てリンクされるので、オブジェクトHにおける個々のプリミティブフィールドのコンテンツは、オブジェクトK及びTそれぞれにおける対応するプリミティブフィールドにわたり容易にコピーすることができる。   Since objects H, T, and K are all linked through the concordance table of FIG. 6, the contents of the individual primitive fields in object H should be easily copied across the corresponding primitive fields in objects K and T, respectively. Can do.

ここで図7を参照すると、わずかに異なって存在しているのが示されている。ここでマシーンMnによって行なわれるアプリケーションプログラム50の処理は、既存のオブジェクトHを参照する新しいリファレンスフィールド46をオブジェクトB内に生成する。従って、マシーンMn−1及びMn+1内に包含される対応するオブジェクトBにおいてリファレンスフィールド46のローカルコピーを作成することが必要である。   Referring now to FIG. 7, it is shown that they exist slightly differently. Here, the processing of the application program 50 performed by the machine Mn generates a new reference field 46 in the object B that refers to the existing object H. It is therefore necessary to make a local copy of the reference field 46 in the corresponding object B contained within the machines Mn-1 and Mn + 1.

最終結果は図8に示される通りであり、ここでは、新しいリファレンスフィールド56及び66がマシーンMn−1及びMn+1内にそれぞれ作成されている。更に、これらの新しいリファレンスフィールドの各々のコンテンツは、マシーンMnのオブジェクトHにそれぞれ対応するオブジェクトK及びTへのリファレンスである。この作成は、図6のコンコーダンステーブルを調べることによって可能であり、これによって例えば、マシーンMn+1は、マシーンMnのオブジェクトHに対応するそのローカルメモリにおけるオブジェクトがオブジェクトTであることを認識するようになる。   The final result is as shown in FIG. 8, where new reference fields 56 and 66 are created in machines Mn-1 and Mn + 1, respectively. In addition, the content of each of these new reference fields is a reference to objects K and T, respectively corresponding to object H of machine Mn. This creation is possible by examining the concordance table of FIG. 6 so that, for example, machine Mn + 1 recognizes that the object in its local memory corresponding to object H of machine Mn is object T. .

次に図9を参照すると、初期ロード処理中に、各JAVA(登録商標)仮想マシーン72を作成するためにロードされるプログラム50が修正される。この修正は、図9のステップ90で始まり、ロードされているアプリケーション50において全メモリロケーション(JAVA(登録商標)ではフィールドと呼ばれるが、他の言語でも等価の用語が使用される)を検出する初期実体ステップ91を包含する。このようなメモリロケーションは、ステップ92及び93で次の処理のために識別する必要がある。ロード処理中のDRT71は、メモリロケーション全てのリストを作成し、すなわち識別され、JAVA(登録商標)フィールドは、オブジェクト及びクラス毎にリストされる。揮発性フィールド及び同期フィールドの両方がリストされる。   Referring now to FIG. 9, during the initial loading process, the program 50 loaded to create each JAVA virtual machine 72 is modified. This modification begins at step 90 of FIG. 9 and initially detects all memory locations (called fields in JAVA®, but equivalent terms are used in other languages) in the loaded application 50. Includes entity step 91. Such memory locations need to be identified for further processing in steps 92 and 93. The DRT 71 during the load process creates a list of all memory locations, i.e. identified, and the JAVA field is listed by object and class. Both volatile and sync fields are listed.

修正手順の次の段階(図9のステップ92で示される)は、あらゆる処理アクティビティを位置付けるために実行可能アプリケーションコードをサーチすることであり、該処理アクティビティは、ステップ91で生成されたリストに対応するフィールド値をマニピュレート又は変更し、従って、対応するメモリロケーションの値が変更されるようにフィールドに書き込む。フィールド値を変更するこのようなオペレーション(通常は、JAVA(登録商標)言語におけるプットスタティック(putstatic)又はプットフィールド(putfield))が検出されると、ステップ93で「更新伝播ルーチン」がプログラムのこの場所に挿入され、フィールドのコンテンツが変更されたことを他の全てのマシーンに確実に通知されるようにする。その後、ロード処理は、本明細書に組み込まれた上述の明細書に記載され且つ図9のステップ94で示されるように、通常の方法で続行される。   The next stage of the modification procedure (indicated by step 92 in FIG. 9) is to search the executable application code to locate any processing activity, which corresponds to the list generated in step 91. Manipulate or change the field value to be written, so that the value of the corresponding memory location is changed. When such an operation that changes a field value (usually put static or put field in JAVA® language) is detected, at step 93 an "update propagation routine" is Inserted in place to ensure that all other machines are notified that the field contents have changed. Thereafter, the loading process continues in the normal manner as described in the above specification incorporated herein and indicated at step 94 in FIG.

ロード中の初期修正の他の形式を図10に示す。ここで、開始ステップ90及びリスティングステップ91並びにサーチングステップ92は図9と同じである。しかしながら、処理スレッドが更新を実行する「更新伝播ルーチン」をステップ93として挿入するのではなく、「警報ルーチン」がステップ103に挿入される。「警報ルーチン」は、処理に使用されずDRTに割り当てられる1つ又は複数のスレッドに対し必要な伝播を実行するよう指示する。このステップ103は、図9のステップ93よりも迅速な代替手段であり、より低いオーバヘッドをもたらす。   Another form of initial correction during loading is shown in FIG. Here, the start step 90, listing step 91, and searching step 92 are the same as in FIG. However, instead of inserting an “update propagation routine” in which the processing thread executes the update as step 93, an “alarm routine” is inserted into step 103. The “alert routine” instructs one or more threads that are not used for processing and assigned to the DRT to perform the necessary propagation. This step 103 is a quicker alternative than step 93 of FIG. 9 and results in lower overhead.

図9又は10で説明されるようなロード処理中のこの初期修正が行われると、図11及び12に示されるマルチスレッド処理オペレーションのいずれか1つが行なわれる。図11の実施形態で分かるように、スレッド111/1...111/4からなるマシーンM1上のマルチスレッド処理110が行われ、第2スレッド111/2の処理(この実施例での)では、そのスレッド111/2がステップ113でフィールド値の変更を認識することになる。この段階では、そのスレッド111/2の通常処理はステップ114で停止し、同じスレッド111/2は、ステップ113で行われた変更されたフィールド及び変更されたコンテンツのアイデンティティをネットワーク53を介して他の全マシーンM2...Mnに通知する。この通信手順の最後においてステップ115で、スレッド111/2は、フィールドコンテンツの変更がある次のインスタンスまで処理を再開する。   When this initial modification during the loading process as described in FIG. 9 or 10 is performed, one of the multithread processing operations shown in FIGS. 11 and 12 is performed. As can be seen in the embodiment of FIG. 11, threads 111/1. . . A multi-thread process 110 on the machine M1 consisting of 111/4 is performed, and in the process of the second thread 111/2 (in this embodiment), the thread 111/2 recognizes the change of the field value in step 113. It will be. At this stage, normal processing of the thread 111/2 is stopped at step 114, and the same thread 111/2 exchanges the changed field and changed content identity executed at step 113 via the network 53. All machines M2. . . Notify Mn. At the end of this communication procedure, at step 115, thread 111/2 resumes processing until the next instance with field content changes.

図12に示された他の構成では、ステップ113で、マシーンM1上のスレッド111/2がフィールド値の変更を認識すると、該スレッド111/2は、DRT処理120に割り当てられた別のスレッド121/1が、ステップ113で検出された変更フィールド及び変更コンテンツのアイデンティティをステップ128に従ってネットワーク53を介して他の全マシーンM2...Mnに伝播するようにDRT処理120(ステップ125及び矢印127によって示されるように)に指示する。これは、迅速に実行できるオペレーションであり、すなわち、初期スレッド111/2の処理は、スレッド111/2がステップ115で処理を再開する前にステップ125に示されるように瞬間的に中断されるだけである。次いで、変更(矢印127によって示されるような)を通知された他のスレッド121/1は、ステップ128に示されるように、その変更をネットワーク53を介して他のマシーンM2...Mnの各々に伝送する。   In the other configuration shown in FIG. 12, when the thread 111/2 on the machine M1 recognizes the change of the field value in step 113, the thread 111/2 is changed to another thread 121 assigned to the DRT process 120. / 1 changes the identity of the change field and change content detected in step 113 via the network 53 according to step 128 to all other machines M2. . . Directs DRT process 120 (as indicated by step 125 and arrow 127) to propagate to Mn. This is an operation that can be performed quickly, ie, the processing of the initial thread 111/2 is only momentarily interrupted as shown in step 125 before thread 111/2 resumes processing in step 115. It is. The other thread 121/1 notified of the change (as indicated by arrow 127) then communicates the change to another machine M2. . . Transmit to each of Mn.

図12のこの第2の構成は、種々のスレッド111/1...111/3及び121/1(これらは一般に均等な要求の影響を受けない)の処理能力をうまく利用し、増大する「n」のサイズと共に良好な拡張をもたらす(nは2以上の整数であって、ネットワーク53に接続されアプリケーションプログラム50を同時に実行するマシーンの総数を表す)。どの構成が使用されるかに関わらず、ステップ113で検出された変更フィールド及びアイデンティティ及び値は、ネットワーク上の他のマシーンM2...Mn全てに伝播される。   This second configuration of FIG. 12 includes various threads 111/1. . . Take advantage of the processing power of 111/3 and 121/1 (which are generally not affected by equal demands) and provide good expansion with increasing size of “n” (where n is an integer greater than or equal to 2) The total number of machines connected to the network 53 and simultaneously executing the application program 50). Regardless of which configuration is used, the change fields and identities and values detected in step 113 are not changed by other machines M2. . . Propagated to all Mn.

これは図13に示されており、DRT71/1及び図12のスレッド121/1(図13のステップ128によって表わされる)は、ネットワーク53を介してマシーンM1での処理による図12のステップ113で生成されリストされたメモリロケーションのアイデンティティ及び変更コンテンツを他のマシーンM2...Mnの各々に送信する。   This is illustrated in FIG. 13 where DRT 71/1 and thread 121/1 in FIG. 12 (represented by step 128 in FIG. 13) are processed at step 113 in FIG. The identity and change contents of the memory location created and listed are transferred to other machines M2. . . Send to each of Mn.

他のマシーンM2...Mnの各々は、ネットワーク53からアイデンティティとコンテンツペアを受け取り、新しいコンテンツをローカルの対応するメモリロケーションに書き込むことによって、マシーンMnに対する図13のステップ135、136、及び137によって示される動作を実行する。   Other machines M2. . . Each Mn receives the identity and content pair from the network 53 and performs the operations illustrated by steps 135, 136, and 137 in FIG. 13 for the machine Mn by writing the new content to the corresponding local memory location.

図6のコンコーダンステーブルは、サーバーマシーンX内にだけ位置付けできるとは限らないことは、コンピュータ技術分野における当業者には明らかであろう。代わりに、テーブルのローカルコピーは、個々のマシーンMn−1、Mn、Mn+1、その他の各々において維持することができる。加えて、これらの状況下では、各マシーンがその固有のテーブルを調べることによっていずれかの他のマシーンによって参照されるオブジェクトに対応するローカルメモリ内のオブジェクトを決定できるので、グローバル名称を存在させる必要はない。例えば、マシーンMnが、オブジェクトT上に包含されたプリミティブフィールド11のコンテンツを更新するようマシーンMn+1からメッセージを受け取った場合、マシーンMnは、図6のコンコーダンステーブルを調べ、そのオブジェクトHがマシーンMn+1のオブジェクトTに対応しており、従ってこれが更新すべきオブジェクトであることを判断する。すなわち、図6のコンコーダンステーブルは、「GLOBAL」と題された左側の列を含む必要はない。この理由から、図6に示されたテーブルは、サーバーマシーンXが存在しない場合は必要ではないことを示すため、破線によって分離された左側部分を有する。   It will be apparent to those skilled in the computer art that the concordance table of FIG. 6 may not be located only within the server machine X. Instead, a local copy of the table can be maintained on each of the individual machines Mn-1, Mn, Mn + 1, etc. In addition, under these circumstances, a global name must exist because each machine can determine the object in local memory that corresponds to the object referenced by any other machine by examining its own table. There is no. For example, if machine Mn receives a message from machine Mn + 1 to update the contents of primitive field 11 contained on object T, machine Mn looks at the concordance table of FIG. It corresponds to the object T, so it is determined that this is the object to be updated. That is, the concordance table of FIG. 6 does not have to include the left column titled “GLOBAL”. For this reason, the table shown in FIG. 6 has a left portion separated by a dashed line to indicate that it is not necessary if server machine X is not present.

上記では、本発明の幾つかの実施形態のみを説明しており、本発明の範囲から逸脱することなく修正を行い得る点は、コンピュータ技術分野における当業者には明らかである。   The foregoing describes only some embodiments of the present invention and it will be apparent to those skilled in the computer art that modifications may be made without departing from the scope of the present invention.

例えば、上述された構成では、アプリケーションプログラムの一部分(1/n番目)を各々がシェアする「n」個のコンピュータが想定される。このような状況下では、全ての「n」個のコンピュータは同じローカルメモリ構造を有する。しかしながら、コンピュータのサブセットのみが同じローカルメモリ構造を有するようなシステムを動作させることができる。このケースでは、サブセットのメンバの最大数は、上記の説明における「n」と見なされることになる。   For example, in the configuration described above, “n” computers that each share a part (1 / nth) of the application program are assumed. Under such circumstances, all “n” computers have the same local memory structure. However, a system can be operated in which only a subset of computers have the same local memory structure. In this case, the maximum number of members in the subset will be considered “n” in the above description.

また、メモリロケーションが、データとコードの一部分の両方を含むことができることは理解されるはずである。従って、新しい値又はメモリロケーションに行なわれた変更は、新しい数値データ及びコードの新しい又は改訂された部分の両方を含むことができる。同様に、JAVA(登録商標)への言及は、JAVA(登録商標)言語とJAVA(登録商標)プラットフォーム及びアーキテクチャの両方を含む。   It should also be understood that a memory location can include both data and a portion of code. Thus, changes made to new values or memory locations can include both new numerical data and new or revised portions of code. Similarly, references to JAVA include both the JAVA language and the JAVA platform and architecture.

修正の全ての説明される事例では、ロード前、又はロード中、或いはロード後で未修正のアプリケーションコードの実行が開始される前に、アプリケーションコード50が修正される場合、改良されたアプリケーションコードは、修正が行なわれるのに続いて未修正のアプリケーションコードの代わりにロードされて、未修正のアプリケーションコードの代わりに実行されることを理解されたい。   In all described cases of modification, if the application code 50 is modified before loading, during loading, or after execution of unmodified application code begins after loading, the improved application code is It should be understood that subsequent to the modification being made, it is loaded in place of the unmodified application code and executed in place of the unmodified application code.

代替として、修正が、ロード後及び未修正のアプリケーションコードの実行の開始後に行なわれる事例では、未修正のアプリケーションコードは、修正が実施されるのに対応して修正アプリケーションコードと全体的に置き換えることができ、或いは、実行中の未修正のアプリケーションコードに増分的に修正が行なわれるときに部分的に又は増分的に置き換えることができる点を理解されたい。このような修正ルートのどれが使用されるかに関係なく、引き続き行なわれる修正が、未修正のアプリケーションコードの代わりに実行される。   Alternatively, in cases where the modification is done after loading and after execution of the unmodified application code begins, the unmodified application code is totally replaced with the modified application code as the modification is performed. It should be understood that it can be replaced or partially or incrementally replaced when incremental modifications are made to the unmodified application code being executed. Regardless of which such modification route is used, subsequent modifications are performed instead of unmodified application code.

複数のマシーンM1、M2...Mnの各マシーン上で類似の等価のローカルオブジェクト(又はクラス、又は資産又は資源又は同様のもの)全てに対して「メタ−名前」又は「メタ−アイデンティティ」の形式であるグローバル識別子を使用することが有利である。例えば、複数の類似の等価オブジェクトの各マシーン上で各類似の等価ローカルオブジェクトの各固有のローカル名又はアイデンティティを追跡するのではなく、各マシーンがグローバル名称を特定のローカル名又はオブジェクトに関係付けるという条件の下(例えば、「グローバル名称7787」はマシーンM1上のオブジェクト「ローカルオブジェクト456」に対応し、「グローバル名称7787」はマシーンM2上のオブジェクト「ローカルオブジェクト885」に対応し、「グローバル名称7787」はマシーンM3上のオブジェクト「ローカルオブジェクト111」に対応する、など)で、各マシーン上の複数の類似の等価オブジェクトに対応するグローバル名称(例えば、「グローバル名称7787」)を定義又は使用することができる。   A plurality of machines M1, M2. . . Use global identifiers in the form of “meta-name” or “meta-identity” for all similar equivalent local objects (or classes, or assets or resources or the like) on each machine of Mn Is advantageous. For example, instead of tracking each unique local name or identity of each similar equivalent local object on each machine of multiple similar equivalent objects, each machine associates a global name with a particular local name or object. Under the conditions (for example, “global name 7787” corresponds to the object “local object 456” on the machine M1, “global name 7787” corresponds to the object “local object 885” on the machine M2, and “global name 7787” ”Corresponds to the object“ local object 111 ”on the machine M3, etc.) and defines or uses a global name (eg“ global name 7787 ”) corresponding to a plurality of similar equivalent objects on each machine. Can.

全オブジェクト(例えばメモリロケーション又はフィールド)の全ての又は一部のサブセットのリストを最初に記録又は作成するときに各DRT71によって作成されるテーブル又はリスト或いは他のデータ構造において、各マシーンM1、M2...Mn上のこうした各記録されたオブジェクトに対しマシーンM1、M2...Mnの各々上で共通する又は類似した名前又はアイデンティティが存在することは、本明細書に提供される詳細な説明の観点から当業者には明らかであろう。しかしながら、個々のマシーンにおいては、各マシーンが、その固有の内部プロセスに従って異なるメモリロケーションにメモリ値又はコンテンツを記憶することができ、一般的には記憶することになるので、所与の名前又はアイデンティティに対応するローカルオブジェクトは、時間と共に変わることになり、又は変わる可能性がある。従って、DRTの各々におけるテーブル、又はリスト、或いは他のデータ構造は、一般に、単一のメモリ名又はアイデンティティに対応する異なるローカルメモリロケーションを有することになるが、各グローバル「メモリ名」又はアイデンティティは、異なるローカルメモリロケーション内に記憶された同じ「メモリ値又はコンテンツ」を有することになる。よって、各グローバル名称については、コンピュータの各々において1つのファミリーメンバーでの対応する独立ローカルメモリロケーションのファミリーが存在することになる。ローカルメモリ名は異なる場合もあるが、資産、オブジェクト、ロケーション、その他は、本質的には同じコンテンツ又は値を有する。よって、ファミリーは整合性がある。   In the table or list or other data structure created by each DRT 71 when initially recording or creating a list of all or some subsets of all objects (eg memory locations or fields), each machine M1, M2,. . . For each such recorded object on Mn, the machines M1, M2. . . It will be apparent to those skilled in the art in view of the detailed description provided herein that there is a common or similar name or identity on each of Mn. However, in an individual machine, each machine can store and generally store memory values or content in different memory locations according to its own internal process, so a given name or identity The local object corresponding to will change or may change over time. Thus, a table, or list, or other data structure in each of the DRTs will generally have a different local memory location corresponding to a single memory name or identity, but each global “memory name” or identity is Will have the same “memory value or content” stored in different local memory locations. Thus, for each global name, there will be a family of corresponding independent local memory locations with one family member in each of the computers. Although local memory names may be different, assets, objects, locations, etc. have essentially the same content or values. Thus, the family is consistent.

本明細書で使用される用語「テーブル」又は「タビュレーション」は、データを順番に記憶及び読み取ることのできるあらゆるフォーマットのリスト又は編成されたデータ構造を含むことが意図される。   The term “table” or “tabulation” as used herein is intended to include a list or organized data structure in any format that can store and read data in sequence.

ロード中のアプリケーションプログラムコード50の上述の修正は、多くの方法で又は多様な手段で達成できることは、本明細書に提供される説明の観点から当業者には明らかであろう。これらの方法又は手段は、限定でないが、少なくとも以下の5つの方法、及びこれらの5つの方法の変形又は組合せを含む。
(i)ロード時の再コンパイル
(ii)プリコンパイルによるロード前の処理
(iii)ロード前のコンパイル
(iv)「ジャスト−イン−タイム(JIT)」コンパイル
(v)ロード後の再コンパイル(但し、又は例えば、分散環境での関連した又は対応するアプリケーションコードの実行前)。
It will be apparent to those skilled in the art in view of the description provided herein that the above modifications of the application program code 50 being loaded can be accomplished in many ways or by various means. These methods or means include, but are not limited to, at least the following five methods and variations or combinations of these five methods.
(I) Recompilation at load (ii) Pre-load processing by pre-compilation (iii) Compile before load (iv) “Just-in-time (JIT)” compilation (v) Recompilation after load (however, Or, for example, prior to execution of relevant or corresponding application code in a distributed environment).

従来、用語「コンパイル」とは、例えばソースからオブジェクトコード又は1つの言語から別の言語へのコード又は言語の変換を意味する。明確には、本明細書における用語「コンパイル」(及びその文法的に等価のもの)の使用はこれに限定されず、同じコード又は言語内での修正を含む又は包含することができる。   Conventionally, the term “compile” means, for example, the conversion of code or language from source to object code or from one language to another. Specifically, the use of the term “compile” (and its grammatical equivalents) herein is not so limited and can include or encompass modifications within the same code or language.

複数のマシーンM1、M2..Mn間でオペレーションを調整するようメモリマニピュレーションオペレーションを修正する基本的な概念が与えられると、この調整された整合性のある一貫したメモリ状態及びマニピュレーションオペレーション概念、方法、及び手順を実行又は実施することができる幾つかの異なる方法又は実施形態が存在する。   A plurality of machines M1, M2. . Perform or implement this coordinated consistent memory state and manipulation operation concepts, methods, and procedures given the basic concept of modifying memory manipulation operations to coordinate operations between Mn There are several different methods or embodiments that can be used.

第1の実施形態では、特定のマシーン、例えばマシーンM2が、メモリマニピュレーションオペレーションを含む資産(クラス又はオブジェクトなど)をロードし、これを修正し、次いで、他のマシーンM1、M3...Mnの各々に(連続して又は同時に、或いはいずれかの他の順序、ルーチン、又は手順に従って)新しい修正されたメモリマニピュレーションオペレーションを含む修正オブジェクト(又はクラス又は他の資産或いは資源)をロードする。アプリケーションコード内の1つだけのオブジェクトに対応する1つ又は複数のメモリマニピュレーションオペレーションが存在することができ、或いはアプリケーションコード内に複数のオブジェクトに対応する複数のメモリマニピュレーションオペレーションが存在することができる点に留意されたい。1つの実施形態では、ロードされたメモリマニピュレーションオペレーションは実行可能中間コードである点に留意されたい。   In the first embodiment, a particular machine, eg, machine M2, loads and modifies an asset (such as a class or object) that includes a memory manipulation operation, and then other machines M1, M3. . . Load a modified object (or class or other asset or resource) containing a new modified memory manipulation operation into each Mn (sequentially or simultaneously, or according to any other order, routine, or procedure). There can be one or more memory manipulation operations corresponding to only one object in the application code, or there can be multiple memory manipulation operations corresponding to multiple objects in the application code. Please note that. Note that in one embodiment, the loaded memory manipulation operation is executable intermediate code.

「マスター/スレーブ」と呼ぶことができるこの構成では、スレーブ(又は二次)マシーンM1、M3...Mnの各々が、修正されたオブジェクト(又はクラス)をロードし、マシーンM2などのマスター(又は一次)マシーン、或いはマシーンXとしての他の何らかのマシーンによって、コンピュータ通信ネットワーク或いは他の通信リンク又は経路を通じて送られた新しく修正されたメモリマニピュレーションオペレーションを含む。この「マスター/スレーブ」又は「一次/二次」構成の僅かな変形形態では、コンピュータ通信ネットワークが、共有ファイルシステムなどの共有記憶デバイス、或いは共有データベースなどの共有文書/ファイルレポジトリにより置き換えることができる。   In this configuration, which can be referred to as “master / slave”, slave (or secondary) machines M1, M3. . . Each of Mn loads a modified object (or class), through a computer communication network or other communication link or path by a master (or primary) machine, such as machine M2, or some other machine as machine X Contains newly modified memory manipulation operations sent. In a slight variation of this “master / slave” or “primary / secondary” configuration, the computer communication network can be replaced by a shared storage device such as a shared file system or a shared document / file repository such as a shared database. .

各マシーン又はコンピュータ上で実行される修正は必要ではなく、多くの場合同じ又は同一ではないことは、本明細書に示される詳細な説明の観点から明らかであろう。必要とされることは、複数のマシーンの各々が他のマシーンに対して一貫性があり且つ整合性があるように動作する類似の完全な方法修正されることである。更に、例えば特定のハードウェア、アーキテクチャ、オペレーティングシステム、アプリケーションプログラムコード、又は同様のもの、或いは異なる要素に応じて変わる可能性のある修正を実施する多様な方法が存在することは理解されるであろう。オペレーティングシステム内部で、いずれかのオペレーティングシステム外部で、或いは該オペレーティングシステムの恩恵なしで、仮想マシーンの内側で、EPROM内で、ソフトウェア内で、ハードウェア内で、ファームウェア内で、或いはこれらのいずれかの組合せで実装できることは理解されるであろう。   It will be apparent from the detailed description presented herein that the modifications performed on each machine or computer are not necessary and often not the same or identical. What is needed is a similar complete method modification in which each of the machines operates to be consistent and consistent with the other machines. Further, it will be appreciated that there are a variety of ways to implement modifications that may vary depending on, for example, specific hardware, architecture, operating system, application program code, or the like, or different elements. Let ’s go. Inside the operating system, outside any operating system, or without the benefit of the operating system, inside the virtual machine, in EPROM, in software, in hardware, in firmware, or any of these It will be understood that a combination of these can be implemented.

また更なる実施形態では、各マシーンM1、M2...Mnは、1つ又はそれ以上のメモリマニピュレーションオペレーションを含む未修正の資産(クラス又はオブジェクトなど)を受け取るが、オペレーションを修正し、次いで現在修正されたオペレーションからなる資産(クラス又はオブジェクトなど)をロードする。マスター又は一次マシーンなどの1つのマシーンは、各マシーンに送られるメモリマニピュレーションオペレーションに対して異なる修正をカスタマイズし又は実行することができ、この実施形態では、各マシーンによって行なわれる修正が僅かに異なるように容易にできるようにする。これによって、その特定のマシーンアーキテクチャ、ハードウェアプロセッサ、メモリ、構成、オペレーティングシステム、又は他の要素に基づいて拡張、カスタマイズ、及び/又は最適化を行うことができるが、それでも、他のマシーン及び他の類似の修正全てに対して依然として類似しており、整合性があり、且つ一貫性があるようにすることができる。   In still further embodiments, each machine M1, M2,. . . Mn receives an unmodified asset (such as a class or object) that contains one or more memory manipulation operations, but modifies the operation and then loads an asset (such as a class or object) that consists of the currently modified operation To do. One machine, such as a master or primary machine, can customize or perform different modifications to the memory manipulation operations sent to each machine, and in this embodiment, the modifications made by each machine are slightly different. To make it easy to do. This allows for expansion, customization, and / or optimization based on that particular machine architecture, hardware processor, memory, configuration, operating system, or other elements, but still other machines and others Can still be similar, consistent and consistent for all similar modifications.

説明される事例又は実施形態の全てにおいて、マシーンM1、M2...Mn及び任意選択的にマシーンXを含むマシーンへの資産コード(クラスコード又はオブジェクトコードなど)の提供又は伝達は、マシーン間直接通信を提供する(例えば、M2が直接、M1、M3、M4などの各々に提供する)ことによって、或いはカスケード又はシーケンシャル通信を提供又は使用(例えば、M2がM1に提供し、次にM1がM3に提供し、次にM3がM4に提供する、以下同様にして)することによって、或いは直接及びカスケード及び/又はシーケンシャルの組合せによってなど、あらゆる組合せ又は順列で異なるマシーン間で分岐、分散、又は伝達することができる。   In all of the described cases or embodiments, the machines M1, M2. . . Providing or communicating asset codes (such as class codes or object codes) to machines including Mn and optionally machine X provides direct communication between machines (eg, M2 directly, M1, M3, M4, etc. Or provide or use cascade or sequential communication (eg, M2 provides to M1, then M1 provides to M3, then M3 provides to M4, and so on) Can be branched, distributed, or communicated between different machines in any combination or permutation, such as by direct or cascade and / or sequential combinations.

上述の構成は、修正が、この「マスター/スレーブ」又は「一次/二次」構成のこの変形形態における複数のコンピュータの1つによってのみ実行されることになるクリーンアップルーチン、ファイナライズ、又は同様のものに関する場合においては変える必要があり、マシーンM2は、マシーンM2上の未修正の形式のクリーンアップルーチンを含む資産(クラス又はオブジェクトなど)をロードし、次いで、(例えば、M2又は各ローカルマシーンが)資産(クラス又はオブジェクトなど)からマシーン上に全体的に又は部分的に存在していた未修正のクリーンアップルーチンを削除し、コンピュータ通信ネットワークを利用して、他のマシーン上の現在修正され又は削除されたクリーンアップルーチンを有する資産に対する修正されたコードをロードする。従って、この事例では、修正は、資産クリーンアップルーチンの変換、装備、翻訳、又はコンパイルではないが、1つを除いた全マシーン上のクリーンアップルーチンの削除である。1つの実施形態では、ファイナライズ又はクリーンアップルーチンの実際のコード−ブロックは、1つを除いた全てのマシーンで削除され、他の全マシーンはファイナライズルーチンを削除しているので、従って、この最後に残ったマシーンが、ファイナライズルーチンを実行できる唯一のマシーンである。この手法の1つの利点は、1つのマシーンだけがルーチンを有するので、同じファイナライズルーチンを実行する複数のマシーン間の競合が生じないことである。   The above-described configuration is a clean-up routine, finalization, or the like where the modification will be performed only by one of the computers in this "master / slave" or "primary / secondary" configuration variant In the case of things need to change, machine M2 loads an asset (such as a class or object) that contains an unmodified form of cleanup routine on machine M2, and then (for example, M2 or each local machine ) Remove any unmodified cleanup routines that existed in whole or in part on the machine (such as classes or objects) and make use of the computer communication network to modify the current machine on other machines or Modified for assets with deleted cleanup routines To load the over de. Thus, in this case, the modification is not the conversion, equipment, translation, or compilation of the asset cleanup routine, but the deletion of the cleanup routine on all machines except one. In one embodiment, the actual code-block of the finalizing or cleanup routine is deleted on all but one machine, and all other machines are deleting the finalizing routine, so at this end The remaining machine is the only machine that can execute the finalize routine. One advantage of this approach is that since only one machine has a routine, there is no contention between multiple machines executing the same finalization routine.

全体におけるクリーンアップルーチンの削除プロセスは、未修正の資産を受け取ったときに、「マスター」マシーン(例えばマシーンM2、又はマシーンXなどの他の何らかのマシーンなど)によって、或いは他の各マシーンM1、M3...Mnによって実行することができる。この「マスター/スレーブ」又は「一次/二次」構成の別の変形形態は、マシーンM1、M2...Mn及び任意選択的にサーバーマシーンX間の資産、クラス、又はオブジェクトに対するコードを交換する手段として、共有ファイルシステムなどの共有記憶デバイス、或いは共有データベースなどの共有文書/ファイルレポジトリを使用することである。   The overall clean-up routine deletion process can be performed by a “master” machine (eg, machine M2, or some other machine such as machine X) when an unmodified asset is received, or each other machine M1, M3. . . . Can be performed with Mn. Another variation of this “master / slave” or “primary / secondary” configuration is the machine M1, M2. . . Use a shared storage device such as a shared file system or a shared document / file repository such as a shared database as a means of exchanging code for assets, classes or objects between Mn and optionally server machine X. .

更なる構成では、特定のマシーン、例えばマシーンX1が、ファイナライズ又はクリーンアップルーチンを含む未修正の資産(クラス又はオブジェクトなど)をロードし、他の全マシーンM2、M3...Mnが修正を実施して、資産(クラス又はオブジェクトなど)のクリーンアップルーチンを削除し、修正バージョンをロードする。   In a further configuration, a particular machine, eg, machine X1, loads an unmodified asset (such as a class or object) that includes a finalize or cleanup routine, and all other machines M2, M3. . . Mn performs the modification, removes the asset (such as class or object) cleanup routine, and loads the modified version.

更に別の構成では、マシーンM1、M2...Mnが、追加のサーバーマシーンXに一部又は全てのロード要求を送信することができ、該サーバーマシーンが、上述の方法のいずれかを介してアプリケーションプログラムコード50(資産、及び/又はクラス、及び/又はオブジェクトを含む又はこれらからなる)に対する、ファイナライズ又はクリーンアップルーチンを含む修正を行ない、修正されたファイナライズ又はクリーンアップルーチンを含む修正アプリケーションプログラムコードをマシーンM1からMnの各々に戻し、次いで、これらのマシーンが、修正ルーチンを含む修正されたアプリケーションプログラムコードをローカルにロードする。この構成では、マシーンM1からMnが、全てのロード要求をマシーンXに転送し、マシーンXが、修正されたファイナライズ又はクリーンアップルーチンを含む修正されたアプリケーションプログラムコードを各マシーンに戻す。マシーンXによって行なわれる修正は、説明された修正のいずれも含むことができる。この構成は、当然、マシーンの一部にだけ適用することができ、マシーンの他のものに対しては、本明細書に説明される他の構成が適用される。   In yet another configuration, the machines M1, M2. . . Mn can send some or all load requests to the additional server machine X, which uses the application program code 50 (assets and / or classes, and (Including / consisting of objects), including finalization or cleanup routines, and returning modified application program code including modified finalization or cleanup routines to each of the machines M1 to Mn, then Machine locally loads the modified application program code including the modification routine. In this configuration, machines M1 through Mn forward all load requests to machine X, which returns the modified application program code, including modified finalization or cleanup routines, to each machine. The modifications performed by machine X can include any of the modifications described. Of course, this configuration can only be applied to a portion of the machine, and other configurations described herein apply to the rest of the machine.

コンピュータ及び/又はプログラミング技術分野における当業者であれば、付加的なコード又は命令が既存のコード又は命令に挿入されてこれを修正する場合、既存のコード又は命令セットは、オフセット、分岐、属性、マークアップ、及び同様のものが正しく処理され又は応じられるように更なる修正(例えば、シーケンシャル命令の再ナンバリングによってなど)を必要とする可能性があることを認識するであろう。   Those of ordinary skill in the computer and / or programming arts will recognize that if additional code or instructions are inserted into and modify existing code or instructions, the existing code or instruction set will be offset, branch, attribute, It will be appreciated that markups, and the like, may require further modifications (eg, by renumbering sequential instructions, etc.) so that they can be processed or responded correctly.

同様に、JAVA(登録商標)言語では、メモリロケーションは、例えばフィールドタイプ及びアレイタイプの両方を含む。上記の説明は、フィールドを扱っており、アレイタイプに必要な変更は、本質的には同じ必要な変更を加えている。また本発明は、Microsoft.NETプラットフォーム及びアーキテクチャ(VisualBasic、Visual C/C++、及びC#)、FORTRAN、C/C++、COBOL、BASICなどを含むJAVA(登録商標)に類似したプログラミング言語(手続き型、宣言、及びオブジェクト指向言語を含む)に対し等しく適用可能である。   Similarly, in the JAVA language, memory locations include both field types and array types, for example. The above description deals with fields, and the required changes to the array type are essentially the same required changes. The present invention also relates to Microsoft. Programming languages (procedural, declaration, and object-oriented languages similar to JAVA) including NET platform and architecture (VisualBasic, Visual C / C ++, and C #), FORTRAN, C / C ++, COBOL, BASIC, etc. Is equally applicable.

本明細書で使用される用語オブジェクト及びクラスとは、JAVA(登録商標)環境から派生したものであり、ダイナミックリンクライブラリ(DLL)、又はオブジェクトコードパッケージ、或いは機能ユニット又はメモリロケーションなどの異なる環境から派生した類似語を包含するものとする。   The terms object and class used herein are derived from the JAVA environment and are from different environments such as a dynamic link library (DLL), or an object code package, or a functional unit or memory location. Includes derived similar terms.

例えば、限定ではないが、ロック手段、分散型ランタイム手段、モディファイア又は修正手段、及び同様のものを含む本発明の実施形態に関する種々の手段が説明される。本発明の少なくとも1つの実施形態では、これらの種々の手段のいずれか1つ又は各々は、コンピュータプログラムコード命令文又は命令(場合によっては、複数のコンピュータプログラムコード命令文又は命令によるものを含む)によって実施することができ、コンピュータ論理回路、プロセッサ、ASIC、論理又は電子回路ハードウェア、マイクロプロセッサ、マイクロコントローラ、又は他の論理内で実行し、このような論理又は回路のオペレーションを修正して、記載されたオペレーション又は機能を達成する。別の実施形態では、これらの種々の手段のいずれか1つ又は各々は、ファームウェアにおいて実施することができ、他の実施形態では、これらをハードウェアにおいて実施することができる。更に、本発明の少なくとも1つの実施形態では、これらの種々の手段のいずれか1つ又は各々は、コンピュータプログラムソフトウェア、ファームウェア、及び/又はハードウェアの組合せによって実施することができる。   Various means relating to embodiments of the present invention are described including, but not limited to, locking means, distributed runtime means, modifiers or modification means, and the like. In at least one embodiment of the present invention, any one or each of these various means is a computer program code statement or instruction (possibly including a plurality of computer program code statements or instructions). Executing in computer logic, processor, ASIC, logic or electronic circuit hardware, microprocessor, microcontroller, or other logic, and modifying the operation of such logic or circuit, Achieve the operations or functions described. In another embodiment, any one or each of these various means can be implemented in firmware, and in other embodiments they can be implemented in hardware. Furthermore, in at least one embodiment of the present invention, any one or each of these various means may be implemented by a combination of computer program software, firmware, and / or hardware.

上述の方法、手順、及び/又はルーチンのいずれか及び各々は、有利には、何らかの有形媒体上に記憶されるか、或いは電子、信号、又はデジタル形式で存在するコンピュータプログラム及び/又はコンピュータプログラム製品として実施することができる。このようなコンピュータプログラム又はコンピュータプログラム製品は、別個の、及び/又は、コンピュータ、コンピュータマシーン、又は情報アプライアンスのプロセッサ又はマイクロプロセッサなどにおいて、論理を処理する際に実行するためのモジュール、プログラム、又はサブルーチンとして、或いはいずれかの他の方法で編成された命令を含み;コンピュータプログラム又はコンピュータプログラム製品は、コンピュータが実行するオペレーション、或いはコンピュータプログラム又はコンピュータプログラム製品が存在又は実行されているコンピュータに結合され、接続され、或いは他の方法で信号通信中のコンピュータ上のコンピュータのオペレーションを修正する。このようなコンピュータプログラム又はコンピュータプログラム製品は、コンピュータ、コンピュータマシーン、及び/又は情報アプライアンスのオペレーション及びアーキテクチャの構造を修正し、コンピュータの技術上のオペレーションを変更し、本明細書で説明される技術的な効果を実現する。   Any and each of the methods, procedures, and / or routines described above are advantageously stored on some tangible medium, or exist in electronic, signal, or digital form. Can be implemented as Such a computer program or computer program product may be a separate, and / or module, program, or subroutine for execution in processing logic in a computer, computer machine, processor or microprocessor of an information appliance, etc. Including instructions organized as or in any other manner; the computer program or computer program product is coupled to the operations performed by the computer, or the computer on which the computer program or computer program product resides or is running, Modify the operation of the computer on the computer that is connected or otherwise in signal communication. Such a computer program or computer program product modifies the operational and architectural structure of a computer, computer machine, and / or information appliance, changes the technical operation of the computer, and provides the technical capabilities described herein. To achieve a positive effect.

従って、本発明は、記憶媒体に記憶されるか又はいずれかの形式で電子的に存在するプログラム命令のセットを備え、本明細書に記載され請求項のいずれかに含む方法、手順、ルーチン、又は同様のもののいずれかを複数のコンピュータが実施できるよう動作可能なコンピュータプログラム製品を含むことができる。   Accordingly, the present invention comprises a method, procedure, routine, comprising a set of program instructions stored in a storage medium or electronically present in any form and included in any of the claims herein. Or a computer program product operable to allow multiple computers to implement any of the same.

更に、本発明は、(限定ではないが)通信ネットワーク又は他の通信リンク又は経路を介して相互接続された、複数のコンピュータ、又は複数のコンピュータと対話するように適合された単一のコンピュータを含み、各々は、コンピュータの対応する異なるコンピュータの単一のコンピュータ上でのみ動作するよう記述されたアプリケーションコードの同じ部分又は異なる部分をほぼ同時に又は並行して実行するよう動作可能である。コンピュータは、コンピュータプログラム製品がロードされたとき、或いは後続の命令時に本明細書に説明され又は請求項のいずれかに記載された方法、手順、又はルーチンのいずれかを実行するようプログラムされている。同様に、本発明はまた、同じ又はほぼ類似したコンピュータと協働してマルチコンピュータシステムを形成するよう配列された単一のコンピュータをその範囲に含む。   Furthermore, the present invention provides a single computer adapted to interact with multiple computers or with multiple computers interconnected via (but not limited to) a communication network or other communication link or path. Each of which is operable to execute the same or different portions of application code written to run only on a single computer of a corresponding different computer of the computer at substantially the same time or concurrently. The computer is programmed to perform any of the methods, procedures, or routines described herein or as claimed in any of the claims when a computer program product is loaded or upon subsequent instructions. . Similarly, the present invention also includes within its scope a single computer arranged to cooperate with the same or substantially similar computers to form a multi-computer system.

要約すると、少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータ環境において、複写されたオブジェクトの非プリミティブフィールドを複製する方法が開示され、本方法は、
(i)コンコーダンステーブルを作成し、複数のコンピュータのいずれか1つにおいて存在する各オブジェクトについて、コンコーダンステーブルへのエントリをオブジェクトに対する各リファレンスに対応させる段階と、
(ii)コンコーダンステーブルにおける各エントリが、1つのマシーンのオブジェクトによって参照されるローカルメモリオブジェクトへのローカルポインタを包含しており、各コンピュータにおいてコンコーダンステーブルを複製するか、或いはサーバーコンピュータ内に存在する全マシーンに対する単一コンコーダンステーブルの対応する部分に各コンピュータがアクセスできるようにする段階と、
(iii)対応する非プリミティブフィール及びローカルオブジェクトを他の各マシーンに指定させ、対応するローカルメモリオブジェクトの対応するローカルポインタを1つ又は複数のテーブルに入力する段階とを含む。
好ましくは、
(iv)対応する非プリミティブフィールド又は対応するオブジェクトの全ローカルポインタに対応するテーブルにグローバル名称を利用する段階を更に含む。
好ましくは、
(v)アプリケーションプログラム部分のうちの1つについての処理が、マシーンの1つにおける第2の又はその次の参照非プリミティブフィールドの作成を要求する場合、対応する第2の又はその次の参照非プリミティブフィールドをマシーンのうちの他のマシーンの各々において作成する段階を更に含む。
好ましくは、
(vi)各コンピュータ内のマルチスレッドの1つを利用してアプリケーションプログラムの異なる部分を実行する更なる段階と、
(vii)第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドが、コンピュータのうちの他のコンピュータの各々に対し、対応する第2の又はその次の参照非プリミティブフィールドを作成するよう指示する段階と、
を更に含む。
好ましくは、
(viii)各コンピュータ内のマルチスレッドの1つを利用してアプリケーションプログラムの異なる部分を実行する段階と、
(ix)第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドとは異なるスレッドが、コンピュータのうちの他のコンピュータの各々に対し、対応する第2の又はその次の参照非プリミティブフィールドを作成するよう指示する段階と、
を更に含む。
In summary, a non-primitive field of a replicated object is replicated in a multi-computer environment where different portions of at least one application program are executed simultaneously on different computers of a plurality of computers interconnected via a communication network. A method is disclosed, the method comprising:
(I) creating a concordance table and for each object present in any one of the plurality of computers, an entry in the concordance table corresponds to each reference to the object;
(Ii) Each entry in the concordance table contains a local pointer to a local memory object referenced by an object on one machine and duplicates the concordance table on each computer or all existing in the server computer. Allowing each computer to access the corresponding part of a single concordance table for the machine;
(Iii) causing each other machine to designate a corresponding non-primitive field and a local object, and entering a corresponding local pointer of the corresponding local memory object into one or more tables.
Preferably,
(Iv) further comprising using the global name in a table corresponding to the corresponding non-primitive field or all local pointers of the corresponding object;
Preferably,
(V) if processing for one of the application program parts requires creation of a second or next reference non-primitive field in one of the machines, the corresponding second or next reference non-primitive The method further includes creating a primitive field on each of the other machines of the machine.
Preferably,
(Vi) a further step of executing different portions of the application program utilizing one of the multithreads in each computer;
(Vii) A thread requesting creation of a second or next reference non-primitive field creates a corresponding second or next reference non-primitive field for each of the other computers of the computer. Instructing
Is further included.
Preferably,
(Viii) executing different portions of the application program using one of the multithreads in each computer;
(Ix) a thread that is different from the thread requesting creation of the second or next reference non-primitive field for each other computer of the computer corresponding to the second or next reference non-primitive Instructing them to create a field,
Is further included.

更に、少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータシステムが開示され、コンピュータのいずれか1つにおいて作成された各非プリミティブフィールドについて、全コンピュータによってアクセス可能か或いは各コンピュータにおいて複製されたコンコーダンステーブルへの対応するエントリが存在し、テーブルエントリは、1つのコンピュータの非プリミティブフィールドによって参照されたローカルメモリオブジェクトへのローカルポインタを包含し、コンピュータは互いに、対応する非プリミティブフィール及びローカルオブジェクトを指定し、対応するローカルメモリオブジェクトの対応するローカルポインタは、1つ又は複数のコンコーダンステーブルに入力される。   Further disclosed is a multi-computer system in which different portions of at least one application program are simultaneously executed on different computers of a plurality of computers interconnected via a communication network, and created on any one of the computers For each non-primitive field, there is a corresponding entry in the concordance table that is accessible by all computers or replicated at each computer, and the table entry is to the local memory object referenced by the non-primitive field of one computer. Including local pointers, the computer specifies each other a corresponding non-primitive field and a local object, and a corresponding pair of local memory objects. Local pointer is input to one or more of concordance tables.

好ましくは、1つ又は複数のテーブルが、対応する非プリミティブフィールド又は対応するオブジェクトの全ローカルポインタに対応するグローバル名称を利用する。   Preferably, one or more tables utilize a global name corresponding to a corresponding non-primitive field or all local pointers of a corresponding object.

好ましくは、コンピュータの1つにおける各第2の又はその次の参照非プリミティブフィールドに対して、対応する第2の又はその次の参照非プリミティブフィールドが、コンピュータの他のコンピュータの各々に作成される。   Preferably, for each second or subsequent reference non-primitive field in one of the computers, a corresponding second or subsequent reference non-primitive field is created in each of the other computers of the computer. .

好ましくは、各コンピュータにおいてマルチスレッド処理を利用して、アプリケーションプログラムの異なる部分を実行し、第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドが、コンピュータの他のコンピュータの各々に対し、第2の又はその次の参照非プリミティブフィールドを作成するよう指示する。   Preferably, each computer utilizes multi-thread processing to execute different parts of the application program, and a thread requesting the creation of a second or subsequent reference non-primitive field is sent to each of the other computers of the computer. Instructs the second or next reference non-primitive field to be created.

代替的に、各コンピュータにおいてマルチスレッド処理を用いて、アプリケーションプログラムの異なる部分を実行し、第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドとは異なるスレッドが、コンピュータの他のコンピュータの各々に対し、第2の又はその次の参照非プリミティブフィールドを作成するよう指示する。   Alternatively, each computer uses multi-thread processing to execute a different part of the application program, and a thread different from the thread requesting the creation of the second or subsequent reference non-primitive field is Instruct each of the computers to create a second or subsequent reference non-primitive field.

通信ネットワークを介して相互接続され、上記の方法のいずれかを確実に実行するよう動作可能な複数のコンピュータが提供される。   A plurality of computers are provided that are interconnected via a communication network and operable to reliably perform any of the methods described above.

記憶媒体内に記憶され、上記の方法のいずれかを複数のコンピュータに実行させるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品が更に提供される。   There is further provided a computer program product comprising a set of program instructions stored in a storage medium and operable to cause a plurality of computers to perform any of the methods described above.

上記の方法のいずれかを実行するか、或いは上述されたコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータが開示される。   A single computer is disclosed that is adapted to cooperate with at least one other computer to perform any of the methods described above or to form a computer system as described above.

本明細書で使用される用語「備える」(及びその文法的変形形態)は、「有する」又は「含む」といった包括的な意味で使用され、「だけからなる」という排他的意味では使用されない。   As used herein, the term “comprising” (and grammatical variations thereof) is used in a comprehensive sense such as “having” or “including” and not in an exclusive sense of “consisting solely of”.

JAVA(登録商標)コードを動作し、これによって単一のJAVA(登録商標)仮想マシーンを構成するよう配置された従来技術のコンピュータの概略図である。1 is a schematic diagram of a prior art computer arranged to operate JAVA code and thereby constitute a single JAVA virtual machine. FIG. 図1Aに類似しているが、コードの初期ロードを示す図である。FIG. 1B is similar to FIG. 1A but shows the initial loading of code. 各々がマルチコンピュータシステムを形成するためのJAVA(登録商標)仮想マシーンである複数のコンピュータの相互接続を示す図である。FIG. 2 is a diagram showing interconnection of a plurality of computers, each of which is a JAVA (registered trademark) virtual machine for forming a multicomputer system. 少なくとも1つの付加的なサーバーマシーンXがサーバーとして接続される「n」個のアプリケーション実行コンピュータを示す図である。FIG. 4 is a diagram showing “n” application execution computers to which at least one additional server machine X is connected as a server. オブジェクト及びフィールドを含むメモリロケーションを示す複数マシーンにおけるメモリロケーションの概略マップである。FIG. 6 is a schematic map of memory locations in a plurality of machines showing memory locations including objects and fields. 図3に類似しているが、新しいオブジェクトを参照するリファレンスフィールドの作成を示すメモリマップである。FIG. 4 is a memory map similar to FIG. 3 but showing the creation of a reference field that references a new object. 新しく作成されたリファレンスフィールドの成功した複製を示すメモリマップである。Fig. 4 is a memory map showing a successful copy of a newly created reference field. 対応するリファレンスフィールドをリストするテーブルである。It is a table that lists the corresponding reference fields. 更に別のリファレンスフィールドの作成を示すメモリマップである。It is a memory map which shows creation of another reference field. 別のリファレンスフィールドの成功した複製を示すメモリマップである。Fig. 6 is a memory map showing a successful copy of another reference field. ネットワークにおける各マシーン上の同じアプリケーションのロード中に行われる手順のフローチャートである。Fig. 6 is a flowchart of procedures performed during loading of the same application on each machine in the network. 図9に類似した改良手順を示すフローチャートである。It is a flowchart which shows the improvement procedure similar to FIG. メモリ更新の第1の実施形態を利用する図8のマシーン上で実行されるマルチスレッド処理の概略図である。FIG. 9 is a schematic diagram of multi-thread processing performed on the machine of FIG. 8 utilizing the first embodiment of memory update. 図11に類似した他の実施形態を示す図である。FIG. 12 shows another embodiment similar to FIG. 11. 図8のコンピュータのためのマルチスレッドメモリ更新を示す図である。FIG. 9 illustrates a multi-thread memory update for the computer of FIG.

Claims (13)

少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータ環境において、複写されたオブジェクトの非プリミティブフィールドを複製する方法であって、
(i)コンコーダンステーブルを作成し、前記複数のコンピュータのいずれか1つにおいて存在する各オブジェクトについて、前記コンコーダンステーブルへのエントリを前記オブジェクトに対する各リファレンスに対応させる段階と、
(ii)前記コンコーダンステーブルにおける前記各エントリが、前記1つのマシーンのオブジェクトによって参照されるローカルメモリオブジェクトへのローカルポインタを包含しており、各コンピュータにおいて前記コンコーダンステーブルを複製するか、或いは、サーバーコンピュータ内に存在する全マシーンに対する単一のコンコーダンステーブルの対応する部分に各コンピュータがアクセスできるようにする段階と、
(iii)対応する非プリミティブフィールド及びローカルオブジェクトを前記他の各マシーンに指定させ、前記対応するローカルメモリオブジェクトの対応するローカルポインタを前記1つ又は複数のテーブルに入力する段階と、
を含む方法。
A method for duplicating a non-primitive field of a duplicated object in a multi-computer environment where different parts of at least one application program are executed simultaneously on different computers of a plurality of computers interconnected via a communication network. And
(I) creating a concordance table and for each object present in any one of the plurality of computers, an entry in the concordance table corresponds to each reference to the object;
(Ii) Each entry in the concordance table contains a local pointer to a local memory object referenced by the object of the one machine, and each computer replicates the concordance table or server computer Allowing each computer to access corresponding parts of a single concordance table for all machines present in the machine;
(Iii) causing each other machine to specify a corresponding non-primitive field and a local object, and inputting a corresponding local pointer of the corresponding local memory object to the one or more tables;
Including methods.
(iv)対応する非プリミティブフィールド又は対応するオブジェクトの全ローカルポインタに対応する前記テーブルにグローバル名称を利用段階を更に含む、
請求項1に記載の方法。
(Iv) further comprising using a global name in the table corresponding to the corresponding non-primitive field or all local pointers of the corresponding object;
The method of claim 1.
(v)前記アプリケーションプログラム部分のうちの1つについての処理が、前記マシーンの1つにおける第2の又はその次の参照非プリミティブフィールドの作成を要求する場合、対応する第2の又はその次の参照非プリミティブフィールドを前記マシーンのうちの他のマシーンの各々において作成する段階を更に含む、
請求項1又は2に記載の方法。
(V) if processing for one of the application program parts requires the creation of a second or next reference non-primitive field in one of the machines, the corresponding second or next Further comprising creating a reference non-primitive field on each of the other machines of the machine;
The method according to claim 1 or 2.
(vi)前記各コンピュータ内のマルチスレッドの1つを利用して前記アプリケーションプログラムの前記異なる部分を実行する段階と、
(vii)前記第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドが、前記コンピュータのうちの他のコンピュータの各々に対し、前記対応する第2の又はその次の参照非プリミティブフィールドを作成するように指示する段階と、
を含む、
ことを特徴とする請求項3に記載の方法。
(Vi) executing the different portions of the application program using one of the multi-threads in each computer;
(Vii) a thread requesting creation of the second or next reference non-primitive field to each of the other computers of the computer for the corresponding second or next reference non-primitive field; Instructing them to create
including,
The method according to claim 3.
(viii)前記各コンピュータ内のマルチスレッドの1つを利用して前記アプリケーションプログラムの前記異なる部分を実行する段階と、
(ix)前記第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドとは異なるスレッドが、前記コンピュータのうちの他のコンピュータの各々に対し、前記対応する第2の又はその次の参照非プリミティブフィールドを作成するよう指示する段階と、
を更に含む、
ことを特徴とする請求項3に記載の方法。
(Viii) executing the different portions of the application program utilizing one of the multi-threads in each computer;
(Ix) a thread different from the thread requesting the creation of the second or next reference non-primitive field is sent to each of the other computers of the computer for the corresponding second or next Instructing to create a reference non-primitive field;
Further including
The method according to claim 3.
少なくとも1つのアプリケーションプログラムの異なる部分が、通信ネットワークを介して相互接続された複数のコンピュータの異なるコンピュータ上で同時に実行されるマルチコンピュータシステムであって、
前記コンピュータのいずれか1つにおいて作成された各非プリミティブフィールドについて、前記全コンピュータによってアクセス可能か又は前記各コンピュータにおいて複製されたコンコーダンステーブルへの対応するエントリが存在し、
前記テーブルエントリは、前記1つのコンピュータの非プリミティブフィールドによって参照されたローカルメモリオブジェクトへのローカルポインタを包含し、
前記コンピュータは互いに、対応する非プリミティブフィールド及びローカルオブジェクトを指定し、前記対応するローカルメモリオブジェクトの対応するローカルポインタは、前記1つ又は複数のコンコーダンステーブルに入力される、
ことを特徴とするマルチコンピュータシステム。
A multi-computer system in which different parts of at least one application program are executed simultaneously on different computers of a plurality of computers interconnected via a communication network,
For each non-primitive field created on any one of the computers, there is a corresponding entry in the concordance table that is accessible by all computers or replicated on each computer;
The table entry contains a local pointer to a local memory object referenced by a non-primitive field of the one computer;
The computer specifies a corresponding non-primitive field and a local object to each other, and a corresponding local pointer of the corresponding local memory object is input to the one or more concordance tables;
A multi-computer system characterized by that.
前記1つ又は複数のテーブルが、対応する非プリミティブフィールド又は対応するオブジェクトの全ローカルポインタに対応するグローバル名称を利用する、
ことを特徴とする請求項6に記載のシステム。
The one or more tables utilize corresponding global names corresponding to all non-primitive fields or all local pointers of corresponding objects;
The system according to claim 6.
前記コンピュータの1つにおける各第2の又はその次の参照非プリミティブフィールドに対して、対応する第2の又はその次の参照非プリミティブフィールドが、前記コンピュータの他のコンピュータの各々において作成される、
ことを特徴とする請求項6又は7に記載のシステム。
For each second or next reference non-primitive field in one of the computers, a corresponding second or next reference non-primitive field is created in each of the other computers of the computer.
The system according to claim 6 or 7, characterized by the above.
前記各コンピュータにおいてマルチスレッド処理を用いて前記アプリケーションプログラムの異なる部分を実行し、前記第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドが、前記コンピュータの他のコンピュータの各々に対し、前記第2の又はその次の参照非プリミティブフィールドを作成するよう指示する、
ことを特徴とする請求項8に記載のシステム。
A thread that executes different parts of the application program using multi-thread processing in each computer and requests creation of the second or next reference non-primitive field is sent to each of the other computers of the computer. Directing the second or next reference non-primitive field to be created,
The system according to claim 8.
前記各コンピュータにおいてマルチスレッド処理を用いて前記アプリケーションプログラムの異なる部分を実行し、前記第2の又はその次の参照非プリミティブフィールドの作成を要求するスレッドとは異なるスレッドが、前記コンピュータの他のコンピュータの各々に対し、前記第2の又はその次の参照非プリミティブフィールドを作成するよう指示する、
ことを特徴とする請求項8に記載のシステム。
A thread different from the thread that executes the different parts of the application program using multi-thread processing in each computer and requests the creation of the second or next reference non-primitive field is another computer of the computer Instructing each to create the second or next reference non-primitive field;
The system according to claim 8.
通信ネットワークを介して相互接続され、請求項1から5のいずれか1項に記載の方法を確実に実行するよう動作可能な複数のコンピュータ。   A plurality of computers interconnected via a communication network and operable to reliably perform the method of any one of claims 1-5. 記憶媒体内に記憶され、請求項1から5のいずれか1項に記載の方法を複数のコンピュータが実行できるよう動作可能なプログラム命令のセットを含むコンピュータプログラム製品。   6. A computer program product stored in a storage medium and comprising a set of program instructions operable to allow a plurality of computers to perform the method of any one of claims 1-5. 請求項1〜5のいずれか1項に記載の方法を実行するため、或いは請求項6〜11のいずれか1項に記載のコンピュータシステムを形成するために、少なくとも1つの他のコンピュータと協働するように適合された単一のコンピュータ。   Cooperating with at least one other computer to perform the method according to any one of claims 1 to 5 or to form the computer system according to any one of claims 6 to 11. A single computer adapted to do.
JP2008534815A 2005-10-10 2006-10-05 Duplicate object graph Pending JP2009512030A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
AU2005905580A AU2005905580A0 (en) 2005-10-10 Replication of Object Graphs
PCT/AU2006/001450 WO2007041765A1 (en) 2005-10-10 2006-10-05 Replication of object graphs

Publications (1)

Publication Number Publication Date
JP2009512030A true JP2009512030A (en) 2009-03-19

Family

ID=37942203

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008534815A Pending JP2009512030A (en) 2005-10-10 2006-10-05 Duplicate object graph

Country Status (4)

Country Link
EP (1) EP1934776A4 (en)
JP (1) JP2009512030A (en)
CN (1) CN101283342B (en)
WO (1) WO2007041765A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8859794B2 (en) 2005-04-26 2014-10-14 Battelle Memorial Institute Use of fatty acids as feed material in polyol process
US10394531B2 (en) * 2017-04-29 2019-08-27 Cisco Technology, Inc. Hyper dynamic Java management extension

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863382A (en) * 1994-08-19 1996-03-08 Fujitsu Ltd Method and device for confirming data compatibility in distributed system
US5799306A (en) * 1996-06-21 1998-08-25 Oracle Corporation Method and apparatus for facilitating data replication using object groups
JPH11272534A (en) * 1998-01-20 1999-10-08 Fujitsu Ltd Document distribution processing method, server management method for the same and recording medium for server program
JP2001188763A (en) * 1999-12-28 2001-07-10 Toshiba Corp Distributed object system
WO2003083614A2 (en) * 2002-03-25 2003-10-09 Eternal Systems, Inc. Transparent consistent active replication of multithreaded application programs

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4497149T1 (en) * 1993-09-24 1996-10-17 Oracle Corp Method and device for replicating data
US5787442A (en) * 1996-07-11 1998-07-28 Microsoft Corporation Creating interobject reference links in the directory service of a store and forward replication computer network
US5829001A (en) * 1997-01-21 1998-10-27 Netiq Corporation Database updates over a network
SE521456C2 (en) * 1998-12-15 2003-11-04 Ericsson Telefon Ab L M Method and apparatus of a distributed system
WO2005103928A1 (en) * 2004-04-22 2005-11-03 Waratek Pty Limited Multiple computer architecture with replicated memory fields

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0863382A (en) * 1994-08-19 1996-03-08 Fujitsu Ltd Method and device for confirming data compatibility in distributed system
US5799306A (en) * 1996-06-21 1998-08-25 Oracle Corporation Method and apparatus for facilitating data replication using object groups
JPH11272534A (en) * 1998-01-20 1999-10-08 Fujitsu Ltd Document distribution processing method, server management method for the same and recording medium for server program
JP2001188763A (en) * 1999-12-28 2001-07-10 Toshiba Corp Distributed object system
WO2003083614A2 (en) * 2002-03-25 2003-10-09 Eternal Systems, Inc. Transparent consistent active replication of multithreaded application programs

Also Published As

Publication number Publication date
CN101283342B (en) 2010-09-08
CN101283342A (en) 2008-10-08
WO2007041765A1 (en) 2007-04-19
EP1934776A4 (en) 2009-05-06
EP1934776A1 (en) 2008-06-25

Similar Documents

Publication Publication Date Title
US7761670B2 (en) Modified machine architecture with advanced synchronization
US20070100828A1 (en) Modified machine architecture with machine redundancy
US7996627B2 (en) Replication of object graphs
US7739349B2 (en) Synchronization with partial memory replication
US7581069B2 (en) Multiple computer system with enhanced memory clean up
US20080134189A1 (en) Job scheduling amongst multiple computers
US8122198B2 (en) Modified machine architecture with partial memory updating
US20080133859A1 (en) Advanced synchronization and contention resolution
JP2009512030A (en) Duplicate object graph
US7958322B2 (en) Multiple machine architecture with overhead reduction
JP2009512028A (en) Improved machine architecture with partial memory update
JP2009512029A (en) Multi-computer system with extended memory cleanup
AU2006303865B2 (en) Multiple machine architecture with overhead reduction
AU2006301909B2 (en) Modified machine architecture with partial memory updating
JP2009512081A (en) Multi-machine architecture with reduced overhead
AU2006301911B2 (en) Failure resistant multiple computer system and method
AU2006301910B2 (en) Multiple computer system with enhanced memory clean up
AU2006301912A1 (en) Replication of object graphs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090925

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111114

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120423