EP1934776A1 - Replication of object graphs - Google Patents
Replication of object graphsInfo
- Publication number
- EP1934776A1 EP1934776A1 EP06790320A EP06790320A EP1934776A1 EP 1934776 A1 EP1934776 A1 EP 1934776A1 EP 06790320 A EP06790320 A EP 06790320A EP 06790320 A EP06790320 A EP 06790320A EP 1934776 A1 EP1934776 A1 EP 1934776A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- computer
- machine
- computers
- machines
- primitive
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/4493—Object persistence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Definitions
- the present invention relates to computing and, in particular, to the simultaneous operation of a plurality of computers interconnected via a communications network.
- the abovementioned patent specifications disclose that at least one application program written to be operated on only a single computer can be simultaneously operated on a number of computers each with independent local memory.
- the memory locations required for the operation of that program are replicated in the independent local memory of each computer.
- each computer has a local memory the contents of which are substantially identical to the local memory of each other computer and are updated to remain so. Since all application programs, in general, read data much more frequently than they cause new data to be written, the abovementioned arrangement enables very substantial advantages in computing speed to be achieved.
- the stratagem enables two or more commodity computers interconnected by a commodity communications network to be operated simultaneously running under the application program written to be executed on only a single computer.
- Higher level languages including JAVA and MICROSOFT.NET have two types of memory locations or fields.
- the first of these is a so called “primitive” field which contains alphanumeric data such as numbers or letters. This content is easily duplicated merely by being copied to another primitive filed.
- the second type of field is a "non-primitive” field generally termed a reference field which essentially contains "a pointer" to another memory location or another object.
- the programming language uses one or more pointers to re-direct the operation of the computer to the referenced address. If the pointers were slavishly copied then they would point to identical memory locations in the other machines but these locations may, or may not, have the same memory contents.
- the genesis of the present invention is a desire to facilitate the replication of non-primitive fields in the multiple computer system thereby permitting the desired goal of substantially identical memory structure and content to be approached as closely as possible.
- a multiple computer system in which different portions of at least one application program execute simultaneously on different ones of the multiple computers which are interconnected via a communications network, wherein for each non-primitive field created in any one of said computers there is a corresponding entry in a concordance table accessible by all said computers or replicated in each said computer, said table entry containing a local pointer to the local memory object referenced by said non-primitive field of said one computer, and wherein each other said computer designates a corresponding non-primitive field and local object and the corresponding local pointer of the corresponding local memory object is entered in said concordance table or tables.
- a computer program product comprising a set of program instructions stored in a storage medium and operable to permit a plurality of computers to carry out the above method.
- Fig. IA is a schematic illustration of a prior art computer arranged to operate JAVA code and thereby constitute a single JAVA virtual machine
- Fig. IB is a drawing similar to Fig. IA but illustrating the initial loading of code
- Fig. 1C illustrates the interconnection of a multiplicity of computers each being a JAVA virtual machine to form a multiple computer system
- Fig. 2 schematically illustrates "n" application running computers to which at least one additional server machine X is connected as a server
- Fig. 3 is a schematic map of the memory locations in the multiple machines showing memory locations including objects and fields,
- Fig. 4 is a memory map similar to Fig. 3 but showing the creation of a reference field which makes reference to a new object
- Fig. 5 is a memory map showing the successful replication of the newly created reference field
- Fig. 6 is a table listing the corresponding reference fields
- Fig. 7 is a memory map showing the creation of a still further reference field
- Fig. 8 is a memory map showing the successful replication of the further reference field
- Fig. 9 is a flow chart of the procedure followed during loading of the same application on each machine in the network.
- Fig. 10 is a flow chart showing a modified procedure similar to that of Fig. 9,
- Fig. 11 is a schematic representation of multiple thread processing carried out on the machines of Fig. 8 utilizing a first embodiment of memory updating
- Fig. 12 is a schematic representation similar to Fig. 11 but illustrating an alternative embodiment
- Fig. 13 illustrates multi-thread memory updating for the computers of Fig. 8.
- the code and data and virtual machine configuration or arrangement of Fig IA takes the form of the application code 50 written in the JAVA language and executing within the JAVA virtual machine 61.
- the intended language of the application is the language JAVA
- a JAVA virtual machine is used which is able to operate code in JAVA irrespective of the machine manufacturer and internal details of the computer or machine.
- the JAVA Virtual Machine Specification 2 nd Edition by T. Lindholm and F. Yellin of Sun Microsystems Inc of the USA which is incorporated herein by reference.
- Fig. IA This conventional art arrangement of Fig. IA is modified in accordance with embodiments of the present invention by the provision of an additional facility which is conveniently termed a “distributed run time” or a “distributed run time system” DRT 71 and as seen in Fig. IB.
- distributed runtime and the “distributed run time system” are essentially synonymous, and by means of illustration but not limitation are generally understood to include library code and processes which support software written in a particular language running on a particular platform. Additionally, a distributed runtime system may also include library code and processes which support software written in a particular language running within a particular distributed computing environment.
- a runtime system (whether a distributed runtime system or not) typically deals with the details of the interface between the program and the operating system such as system calls, program start-up and termination, and memory management.
- a conventional Distributed Computing Environment (that does not provide the capabilities of the inventive distributed run time or distributed run time system 71 used in the preferred embodiments of the present invention) is available from the Open Software Foundation.
- This Distributed Computing Environment (DCE) performs a form of computer-to-computer communication for software running on the machines, but among its many limitations, it is not able to implement the desired modification or communication operations.
- the preferred DRT 71 coordinates the particular communications between the plurality of machines Ml, M2,...Mn.
- the preferred distributed runtime 71 comes into operation during the loading procedure indicated by arrow 75 A or 75B of the JAVA application 50 on each JAVA virtual machine 72 or machines JVM# 1 , JVM#2, ...
- Fig. 1C shows in modified form the arrangement of the JAVA virtual machines, each as illustrated in Fig. IB.
- the same application code 50 is loaded onto each machine Ml, M2...Mn.
- the communications between each machine Ml, M2...Mn are as indicated by arrows 83, and although physically routed through the machine hardware, are advantageously controlled by the individual DRT's 71/1...71/n within each machine.
- this may be conceptionalised as the DRT's 71/1, ...71/n communicating with each other via the network or other communications link 53 rather than the machines Ml, M2...Mn communicating directly themselves or with each other.
- Contemplated and included are either this direct communication between machines Ml, M2...Mn or DRT's 71/1, 71/2...71/n or a combination of such communications.
- the preferred DRT 71 provides communication that is transport, protocol, and link independent.
- the one common application program or application code 50 and its executable version (with likely modification) is simultaneously or concurrently executing across the plurality of computers or machines Ml, M2...Mn.
- the application program 50 is written to execute on a single machine or computer (or to operate on the multiple computer system of the abovementioned patent applications which emulate single computer operation). Essentially the modified structure is to replicate an identical memory structure and contents on each of the individual machines.
- common application program is to be understood to mean an application program or application program code written to operate on a single machine, and loaded and/or executed in whole or in part on each one of the plurality of computers or machines Ml, M2...Mn, or optionally on each one of some subset of the plurality of computers or machines M 1 , M2... Mn.
- application code 50 This is either a single copy or a plurality of identical copies each individually modified to generate a modified copy or version of the application program or program code. Each copy or instance is then prepared for execution on the corresponding machine. At the point after they are modified they are common in the sense that they perform similar operations and operate consistently and coherently with each other.
- a plurality of computers, machines, information appliances, or the like implementing embodiments of the invention may optionally be connected to or coupled with other computers, machines, information appliances, or the like that do not implement embodiments of the invention.
- the same application program 50 (such as for example a parallel merge sort, or a computational fluid dynamics application or a data mining application) is run on each machine, but the executable code of that application program is modified on each machine as necessary such that each executing instance (copy or replica) on each machine coordinates its local operations on that particular machine with the operations of the respective instances (or copies or replicas) on the other machines such that they function together in a consistent, coherent and coordinated manner and give the appearance of being one global instance of the application (i.e. a "meta- application").
- the copies or replicas of the same or substantially the same application codes are each loaded onto a corresponding one of the interoperating and connected machines or computers.
- the application code 50 may be modified before loading, or during the loading process, or with some disadvantages after the loading process, to provide a customization or modification of the application code on each machine.
- Some dissimilarity between the programs or application codes on the different machines may be permitted so long as the other requirements for interoperability, consistency, and coherency as described herein can be maintained.
- each of the machines Ml, M2...Mn and thus all of the machines Ml, M2...Mn have the same or substantially the same application code 50, usually with a modification that may be machine specific.
- each application code 50 is modified by a corresponding modifier 51 according to the same rules (or substantially the same rules since minor optimizing changes are permitted within each modifier 51/1, 51/2...51 /n).
- Each of the machines Ml, M2...Mn operates with the same (or substantially the same or similar) modifier 51 (in some embodiments implemented as a distributed run time or DRT71 and in other embodiments implemented as an adjunct to the application code and data 50, and also able to be implemented within the JAVA virtual machine itself).
- all of the machines Ml, M2...Mn have the same (or substantially the same or similar) modifier 51 for each modification required.
- a different modification for example, may be required for memory management and replication, for initialization, for fmalization, and/or for synchronization (though not all of these modification types may be required for all embodiments).
- There are alternative implementations of the modifier 51 and the distributed run time 71 For example, as indicated by broken lines in Fig.
- the modifier 51 may be implemented as a component of or within the distributed run time 71, and therefore the DRT 71 may implement the functions and operations of the modifier 51.
- the function and operation of the modifier 51 may be implemented outside of the structure, software, firmware, or other means used to implement the DRT 71 such as within the code and data 50, or within the JAVA virtual machine itself.
- both the modifier 51 and DRT 71 are implemented or written in a single piece of computer program code that provides the functions of the DRT and modifier. In this case the modifier function and structure is, in practice, subsumed into the DRT.
- the modifier function and structure is responsible for modifying the executable code of the application code program
- the distributed run time function and structure is responsible for implementing communications between and among the computers or machines.
- the communications functionality in one embodiment is implemented via an intermediary protocol layer within the computer program code of the DRT on each machine.
- the DRT can, for example, implement a communications stack in the JAVA language and use the Transmission Control Protocol/Internet Protocol (TCP/IP) to provide for communications or talking between the machines.
- TCP/IP Transmission Control Protocol/Internet Protocol
- a plurality of individual computers or machines Ml, M2...Mn are provided, each of which are interconnected via a communications network 53 or other communications link.
- Each individual computer or machine is provided with a corresponding modifier 51.
- Each individual computer is also provided with a communications port which connects to the communications network.
- the communications network 53 or path can be any electronic signalling, data, or digital communications network or path and is preferably a slow speed, and thus low cost, communications path, such as a network connection over the Internet or any common networking configurations including ETHERNET or INFINIBAND and extensions and improvements, thereto.
- the computers are provided with one or more known communications ports (such as CISCO Power Connect 5224 Switches) which connect with the communications network 53.
- the size of the smallest memory of any of the machines may be used as the maximum memory capacity of the machines when such memory (or a portion thereof) is to be treated as 'common' memory (i.e. similar equivalent memory on each of the machines Ml ...Mn) or otherwise used to execute the common application code.
- each machine Ml, M2...Mn has a private (i.e. 'non-common') internal memory capability.
- the private internal memory capability of the machines Ml, M2, ..., Mn are normally approximately equal but need not be.
- each machine or computer is preferably selected to have an identical internal memory capability, but this need not be so.
- the independent local memory of each machine represents only that part of the machine's total memory which is allocated to that portion of the application program running on that machine. Thus, other memory will be occupied by the machine's operating system and other computational tasks unrelated to the application program 50.
- Non-commercial operation of a prototype multiple computer system indicates that not every machine or computer in the system utilises or needs to refer to (e.g. have a local replica of) every possible memory location.
- some or all of the plurality of individual computers or machines can be contained within a single housing or chassis (such as so-called “blade servers” manufactured by Hewlett-Packard Development Company, Intel Corporation, IBM Corporation and others) or the multiple processors (eg symmetric multiple processors or SMPs) or multiple core processors (eg dual core processors and chip multithreading processors) manufactured by Intel, AMD, or others, or implemented on a single printed circuit board or even within a single chip or chipset.
- blade servers manufactured by Hewlett-Packard Development Company, Intel Corporation, IBM Corporation and others
- the multiple processors eg symmetric multiple processors or SMPs
- multiple core processors eg dual core processors and chip multithreading processors
- computers or machines having multiple cores, multiple CPU's or other processing logic.
- the generalized platform, and/or virtual machine and/or machine and/or runtime system is able to operate application code 50 in the language(s) (possibly including for example, but not limited to any one or more of source-code languages, intermediate-code languages, object-code languages, machine-code languages, and any other code languages) of that platform and/or virtual machine and/or machine and/or runtime system environment, and utilize the platform, and/or virtual machine and/or machine and/or runtime system and/or language architecture irrespective of the machine or processor manufacturer and the internal details of the machine.
- the platform and/or runtime system can include virtual machine and non-virtual machine software and/or firmware architectures, as well as hardware and direct hardware coded applications and implementations.
- computers and/or computing machines and/or information appliances or processing systems are still applicable.
- computers and/or computing machines that do not utilize either classes and/or objects include for example, the x86 computer architecture manufactured by Intel Corporation and others, the SPARC computer architecture manufactured by Sun Microsystems, Inc and others, the Power PC computer architecture manufactured by International Business Machines Corporation and others, and the personal computer products made by Apple Computer, Inc., and others.
- primitive data types such as integer 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 code or data structures of procedural languages or other languages and environments such as functions, pointers, components, modules, structures, reference and unions.
- This analysis or scrutiny of the application code 50 can take place either prior to loading the application program code 50, or during the application program code 50 loading procedure, or even after the application program code 50 loading procedure (or some combination of these). It may be likened to an instrumentation, program transformation, translation, or compilation procedure in that the application code can be instrumented with additional instructions, and/or otherwise modified by meaning- preserving program manipulations, and/or optionally translated from an input code language to a different code language (such as for example from source-code language or intermediate-code language to object-code language or machine-code language).
- compilation normally or conventionally involves a change in code or language, for example, from source code to object code or from one language to another language.
- compilation and its grammatical equivalents
- the term "compilation” is not so restricted and can also include or embrace modifications within the same code or language.
- the compilation and its equivalents are understood to encompass both ordinary compilation (such as for example by way of illustration but not limitation, from source-code to object code), and compilation from source-code to source-code, as well as compilation from object-code to object code, and any altered combinations therein. It is also inclusive of so-called “intermediary-code languages” which are a form of "pseudo object-code”.
- the analysis or scrutiny of the application code 50 takes place during the loading of the application program code such as by the operating system reading the application code 50 from the hard disk or other storage device, medium or source and copying it into memory and preparing to begin execution of the application program code.
- the analysis or scrutiny may take place during the class loading procedure of the java.lang.ClassLoader.loadClass method (e.g. "java.lang.ClassLoader.loadClass()").
- the analysis or scrutiny of the application code 50 may take place even after the application program code loading procedure, such as after the operating system has loaded the application code into memory, or optionally even after execution of the relevant corresponding portion of the application program code has started, such as 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 commenced execution.
- One such technique is to make the modification(s) to the application code, without a preceding or consequential change of the language of the application code.
- Another such technique is to convert the original code (for example, JAVA language source-code) into an intermediate representation (or intermediate-code language, or pseudo code), such as JAVA byte code. Once this conversion takes place the modification is made to the byte code and then the conversion may be reversed. This gives the desired result of modified JAVA code.
- a further possible technique is to convert the application program to machine code, either directly from source-code or via the abovementioned intermediate language or through some other intermediate means. Then the machine code is modified before being loaded and executed.
- a still further such technique is to convert the original code to an intermediate representation, which is thus modified and subsequently converted into machine code.
- the present invention encompasses all such modification routes and also a combination of two, three or even more, of such routes.
- the DRT 71 or other code modifying means is responsible for creating or replicating a memory structure and contents on each of the individual machines Ml, M2...Mn that permits the plurality of machines to interoperate.
- this replicated memory structure will be identical. Whilst in other embodiments this memory structure will have portions that are identical and other portions that are not. In still other embodiments the memory structures are different only in format or storage conventions such as Big Endian or Little Endian formats or conventions.
- Such local memory read and write processing operation can typically be satisfied within 10 2 — 10 3 cycles of the central processing unit. Thus, in practice there is substantially less waiting for memory accesses which involves and/or writes. Also, the local memory of each machine is not able to be accessed by any other machine and can therefore be said to be independent.
- the invention is transport, network, and communications path independent, and does not depend on how the communication between machines or DRTs takes place. In one embodiment, even electronic mail (email) exchanges between machines or DRTs may suffice for the communications.
- Fig. 2 there are a number of machines Ml, M2, .... Mn, "n” being an integer greater than or equal to two, on which the application program 50 of Fig. IA is being run substantially simultaneously.
- These machines are allocated a number 1, 2, 3, ... etc. in a hierarchical order. This order is normally looped or closed so that whilst machines 2 and 3 are hierarchically adjacent, so too are machines "n" and 1.
- the further machine X can be a low value machine, and much less expensive than the other machines which can have desirable attributes such as processor speed.
- an additional low value machine (X+l) is preferably available to provide redundancy in case machine X should fail.
- server machines X and X+l are provided, they are preferably, for reasons of simplicity, operated as dual machines in a cluster configuration.
- Machines X and X+l could be operated as a multiple computer system in accordance with the present invention, if desired. However this would result in generally undesirable complexity. If the machine X is not provided then its functions, such as housekeeping functions, are provided by one, or some, or all of the other machines.
- FIG. 3 illustrates the memory map for any three machines Mn-I, Mn and Mn+ 1 of the multiple machines making up the computer system.
- the initialisation process described in the above incorporated patent specification has been carried prior to the commencement of operation of the application program and thus the memory contents of each of the machines is essentially identical.
- each machine has two objects A and B and each object has two primitive fields 11 which are capable of storing alphanumeric data.
- the two fields of object A contain the numerals 7 and 9 whilst the two fields of object B contain the numerals 3 and 5.
- each of the individual computers executes different portions of the application program 5. It is to be expected that each machine will generate only revised data to be stored in both primitive and non- primitive fields. Where such fields are primitive fields which contain only alphanumeric data, these fields are able to be easily copied and thereby replicated on each of the other machines.
- machine Mn has a reference field 10 which because it is different from the primitive fields 11 is indicated with a double line border.
- fields 10, 11 and 12 which have corresponding fields 30, 31 and 32 in object A in machine Mn-I, and corresponding fields 20, 21 and 22 in object A in machine Mn+ 1.
- the new reference field 10 contains a reference to an additional object H which itself includes two primitive fields 11.
- Fig. 4 within the reference field 10 are indicated both the name H of the object being referenced and also an arrow to indicate that the contents of the reference field 10 re-directs the program to move from object A to object H.
- the problem therefore arises as to how to replicate the memory changes which have occurred in machine Mn in all the other machines so as to enable the computer system to maintain a substantially coherent memory.
- Fig. 5 The desired final result is illustrated in Fig. 5.
- the machine Mn which had the reference field 10 and the additional object H are as before.
- the object A is provided with a reference field 20 the contents of which refer to a new object T which has been created in the local memory of machine Mn+1 and which corresponds to the object H of machine N.
- machine Mn-I has for object A a reference field 30 which corresponds to field 10 and the contents of which refer to a new object K which has been created within the local memory of machine Mn-I and which corresponds the object H of machine Mn.
- a concordance table such as that illustrated in Fig. 6.
- a concordance table is preferably and conveniently stored within the server machine X and is therefore accessible by all other machines.
- the creation of the referenced object H (which for the purposes of this example may conveniently be assumed to relate to an aspect of the application program 50 regarding a human head, is allocated a global name C (conveniently standing for cranium meaning head in Latin)), it being understood that the local pointer (or address) of H will in general be different from the global name C.
- Fig. 7 a slightly different occurrence is indicated.
- the processing of the application program 50 being carried out by machine Mn generates within object B a new reference field 46 which refers to the existing object H. It is therefore necessary to create a local copy of the reference field 46 in the corresponding objects B contained in machines Mn-I and Mn+ 1.
- Fig. 8 The end result is as illustrated in Fig. 8 where the new reference fields 56 and 66 have been created in machines Mn-I and Mn+ 1 respectively. Furthermore, the content of each of these new reference fields is a reference to the objects, K and T respectively, which correspond to the object H of the machine Mn.
- This creation is possible by consulting the concordance table of Fig. 6 so that machine Mn+ 1, for example, knows that the object in its local memory corresponding to object H of machine Mn is the object T.
- Fig. 9 during the initial loading procedure, the program 50 being loaded to create each JAVA virtual machine 72 is modified. This modification commences at step 90 in Fig.
- the next phase (designated step 92 in Fig. 9) of the modification procedure is to search through the executable application code in order to locate every processing activity that manipulates or changes field values corresponding to the list generated at step 91 and thus writes to fields so the value at the corresponding memory location is changed.
- an "updating propagation routine" is inserted by step 93 at this place in the program to ensure that all other machines are notified that the content of the field has changed.
- the loading procedure continues in a normal way as described in the abovementioned incorporated specifications and as indicated by step 94 in Fig. 9.
- Fig. 10 An alternative form of initial modification during loading is illustrated in Fig. 10.
- start and listing steps 90 and 91 and the searching step 92 are the same as in Fig. 9.
- an "alert routine” is inserted at step 103.
- the "alert routine” instructs a thread or threads not used in processing and allocated to the DRT, to carry out the necessary propagation.
- This step 103 is a quicker alternative to step 93 of Fig. 9 and one which results in lower overhead.
- a thread 111/2 on machine Ml has become aware of a change of field value at step 113, it instructs DRT processing 120 (as indicated by step 125 and arrow 127) that another thread(s) 121/1 allocated to the DRT processing 120 is to propagate in accordance with step 128 via the network 53 to all other machines M2...Mn the identity of the changed field and the changed content detected at step 113.
- This is an operation which can be carried out quickly and thus the processing of the initial thread 111/2 is only interrupted momentarily as indicated in step 125 before the thread 111/2 resumes processing in step 115.
- the other thread 121/1 which has been notified of the change (as indicated by arrow 127) then communicates that change as indicated in step 128 via the network 53 to each of the other machines M2...Mn.
- This second arrangement of Fig. 12 makes better utilisation of the processing power of the various threads 111/1... I l l /3 and 121/1 (which are not, in general, subject to equal demands) and gives better scaling with increasing size of "n", (n being an integer greater than or equal to 2 which represents the total number of machines which are connected to the network 53 and which each execute a different portion of the application program 50 simultaneously). Irrespective of which arrangement is used, the changed field and identities and contents detected at step 113 are propagated to all the other machines M2...Mn on the network.
- Each of the other machines M2...Mn carries out the action indicated by steps 135, 136, and 137 in Fig. 13 for machine Mn by receiving the identity and content pair from the network 53 and writing the new content into the local corresponding memory location.
- the concordance table of Fig. 6 is not necessarily only able to be positioned within a server machine X. Instead, a local copy of the table can be maintained in each of the individual machines Mn-I, Mn, Mn+1, etc. In addition, under these circumstances it is not necessary for there to be a global name since each machine is able, by consulting its own table, to determine the object in local memory which corresponds to the object being referred to by any other machine. For example, if machine Mn receives a message from machine Mn+1 to update the contents of a primitive field 11 contained in object T, machine Mn consults the concordance table of Fig.
- the concordance table of Fig. 6 need not include the left hand column entitled "GLOBAL". For this reason the table illustrated in Fig. 6 has the left hand portion separated by broken lines to indicate it is not required if no server machine X is present.
- the above described arrangements envisage “n" computers each of which shares a fraction (1/ n th) of the application program. Under such circumstances all "n” computers have the same local memory structure. However, it is possible to operate such a system in which a subset only of the computers has the same local memory structure. Under this scenario, the maximum number of members of the subset is to be regarded as "n" the in the description above.
- the memory locations can include both data and also portions of code.
- the new values or changes made to the memory locations can include both new numerical data and new or revised portions of code.
- reference to JAVA includes both the JAVA language and also JAVA platform and architecture.
- the unmodified application code may either be replaced with the modified application code in whole, corresponding to the modifications being performed, or alternatively, the unmodified application code may be replaced in part or incrementally as the modifications are performed incrementally on the executing unmodified application code. Regardless of which such modification routes are used, the modifications subsequent to being performed execute in place of the unmodified application code.
- a global identifier is as a form of 'meta-name' or 'meta-identity' for all the similar equivalent local objects (or classes, or assets or resources or the like) on each one of the plurality of machines Ml 3 M2...Mn.
- a global name corresponding to the plurality of similar equivalent objects on each machine (e.g. "globalname7787"), and with the understanding that each machine relates the global name to a specific local name or object (e.g.
- each DRT 71 when initially recording or creating the list of all, or some subset of all objects (e.g. memory locations or fields), for each such recorded object on each machine Ml, M2...Mn there is a name or identity which is common or similar on each of the machines Ml , M2...Mn.
- the local object corresponding to a given name or identity will or may vary over time since each machine may, and generally will, store memory values or contents at different memory locations according to its own internal processes.
- each of the DRTs will have, in general, different local memory locations corresponding to a single memory name or identity, but each global "memory name" or identity will have the same "memory value or content" stored in the different local memory locations. So 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 the local memory name may differ, the asset, object, location etc has essentially the same content or value. So the family is coherent.
- tablette or “tabulation” as used herein is intended to embrace any list or organised data structure of whatever format and within which data can be stored and read out in an ordered fashion.
- a particular machine say machine M2 loads the asset
- the memory manipulation operation(s) that is (are) loaded is executable intermediary code.
- each of the slave (or secondary) machines Ml, M3...Mn loads the modified object (or class), and inclusive of the new modified memory manipulation operation(s), that was sent to it over the computer communications network or other communications link or path by the master (or primary) machine, such as machine M2, or some other machine as a machine X.
- the computer communications 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.
- each machine Ml, M2...Mn receives the unmodified asset (such as class or object) inclusive of one or more memory manipulation operation(s), but modifies the operations and then loads the asset (such as class or object) consisting of the now modified operations.
- one machine such as the master or primary machine may customize or perform a different modification to the memory manipulation operation(s) sent to each machine, this embodiment more readily enables the modification carried out by each machine to be slightly different. It can thereby be enhanced, customized, and/or optimized based upon its particular machine architecture, hardware processor, memory, configuration, operating system, or other factors yet still be similar, coherent and consistent with the other machines and with all other similar modifications.
- the supply or the communication of the asset code (such as class code or object code) to the machines Ml, M2...Mn and optionally inclusive of a machine X can be branched, distributed or communication among and between the different machines in any combination or permutation; such as by providing direct machine to machine communication (for example, M2 supplies each of Ml, M3, M4 etc. directly), or by providing or using cascaded or sequential communication (for example, M2 supplies Ml which then supplies M3 which then supplies M4, and so on) or a combination of the direct and cascaded and/or sequential.
- direct machine to machine communication for example, M2 supplies each of Ml, M3, M4 etc. directly
- cascaded or sequential communication for example, M2 supplies Ml which then supplies M3 which then supplies M4, and so on
- machine M2 loads the asset (such as class or object) inclusive of a cleanup routine in unmodified form on machine M2, and then (for example, M2 or each local machine) deletes the unmodified cleanup routine that had been present on the machine in whole or part from the asset (such as class or object) and loads by means of the computer communications network the modified code for the asset with the now modified or deleted cleanup routine on the other machines.
- the modification is not a transformation, instrumentation, translation or compilation of the asset cleanup routine but a deletion of the cleanup routine on all machines except one.
- the actual code-block of the finalization or cleanup routine is deleted on all machines except one, and this last machine therefore is the only machine that can execute the finalization routine because all other machines have deleted the finalization routine.
- One benefit of this approach is that no conflict arises between multiple machines executing the same finalization routine because only one machine has the routine.
- the process of deleting the cleanup routine in its entirety can either be performed by the "master” machine (such as for example machine M2 or some other machine such as machine X) or alternatively by each other machine Ml, M3...Mn upon receipt of the unmodified asset.
- the "master” machine such as for example machine M2 or some other machine such as machine X
- each other machine Ml, M3...Mn upon receipt of the unmodified asset.
- primary/secondary arrangement is to use a shared storage device such as a shared file system, or a shared document/file repository such as a shared database as means of exchanging the code for the asset, class or object between machines Ml, M2...Mn and optionally the server machine X.
- a shared storage device such as a shared file system, or a shared document/file repository such as a shared database as means of exchanging the code for the asset, class or object between machines Ml, M2...Mn and optionally the server machine X.
- a particular machine say for example machine Ml, loads the unmodified asset (such as class or object) inclusive of a finalization or cleanup routine and all the other machines M2, M3...Mn perform a modification to delete the cleanup routine of the asset (such as class or object) and load the modified version.
- the machines Ml, M2...Mn may send some or all load requests to the additional server machine X , which performs the modification to the application program code 50 (including or consisting of assets, and/or classes, and/or objects) and inclusive of finalization or cleanup routine(s), via any of the abovementioned methods, and returns in the modified application program code inclusive of the now modified finalization or cleanup routine(s) to each of the machines Ml to Mn, and these machines in turn load the modified application program code inclusive of the modified routine(s) locally.
- machines Ml to Mn forward all load requests to machine X, which returns a modified application program code inclusive of modified finalization or cleanup routine(s) to each machine.
- the modifications performed by machine X can include any of the modifications described. This arrangement may of course be applied to some only of the machines whilst other arrangements described herein are applied to others of the machines.
- memory locations include, for example, both fields and array types.
- the above description deals with fields and the changes required for array types are essentially the same mutatis mutandis.
- the present invention is equally applicable to similar programming languages (including procedural, declarative and object orientated languages) to JAVA including Microsoft.NET platform and architecture (Visual Basic, Visual C/C "1"1" , and C#) FORTRAN, C/C ++ , COBOL, BASIC etc.
- object and class used herein are derived from the JAVA environment and are intended to embrace similar terms derived from different environments such as dynamically linked libraries (DLL), or object code packages, or function unit or memory locations.
- DLL dynamically linked libraries
- any one or each of these various means may be implemented by computer program code statements or instructions (possibly including by a plurality of computer program code statements or instructions) that execute within computer logic circuits, processors, ASICs, logic or electronic circuit hardware, microprocessors, microcontrollers or other logic to modify the operation of such logic or circuits to accomplish the recited operation or function.
- any one or each of these various means may be implemented in firmware and in other embodiments such may be implemented in hardware.
- 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 abovedescribed methods, procedures, and/or routines may advantageously be implemented as a computer program and/or computer program product stored on any tangible media or existing in electronic, signal, or digital form.
- Such computer program or computer program products comprising instructions separately and/or organized as modules, programs, subroutines, or in any other way for execution in processing logic such as in a processor or microprocessor of a computer, computing machine, or information appliance; the computer program or computer program products modifying the operation of the computer in which it executes or on a computer coupled with, connected to, or otherwise in signal communications with the computer on which the computer program or computer program product is present or executing.
- Such a computer program or computer program product modifies the operation and architectural structure of the computer, computing machine, and/or information appliance to alter the technical operation of the computer and realize the technical effects described herein.
- the invention may therefore include a computer program product comprising a set of program instructions stored in a storage medium or existing electronically in any form and operable to permit a plurality of computers to carry out any of the methods, procedures, routines, or the like as described herein including in any of the claims.
- the invention includes (but is not limited to) a plurality of computers, or a single computer adapted to interact with a plurality of computers, interconnected via a communication network or other communications link or path and each operable to substantially simultaneously or concurrently execute the same or a different portion of an application code written to operate on only a single computer on a corresponding different one of computers.
- the computers are programmed to carry out any of the methods, procedures, or routines described in the specification or set forth in any of the claims, on being loaded with a computer program product or upon subsequent instruction.
- the invention also includes within its scope a single computer arranged to co-operate with like, or substantially similar, computers to form a multiple computer system
- processing of one of the application program portions dictates the creation of a second or subsequent referenced non-primitive field in one of the machines, creating a corresponding second or subsequent referenced non- primitive field in each of the other ones of the machines.
- a multiple computer system in which different portions of at least one application program execute simultaneously on different ones of the multiple computers which are interconnected via a communications network, wherein for each non-primitive field created in any one of the computers there is a corresponding entry in a concordance table accessible by all the computers or replicated in each the computer, the table entry containing a local pointer to the local memory object referenced by the non-primitive field of the one computer, and wherein each other the computer designates a corresponding non- primitive field and local object and the corresponding local pointer of the corresponding local memory object is entered in the concordance table or tables.
- the table or tables utilize a global name corresponding to all local pointers of corresponding non-primitive fields or corresponding objects.
- a corresponding second or subsequent referenced non-primitive field is created in each of the other ones of the computers.
- each the computer executes a different portion of the application program, and the thread which dictates the creation of the second or subsequent referenced non-primitive field, instructs each of the other ones of the computers to create the second or subsequent referenced non-primitive field.
- multiple thread processing is utilized in each the computer to execute a different portion of the application program, and a different thread from the thread which dictates the creation of the second or subsequent referenced non- primitive field, instructs each of the other ones of the computers to create the second or subsequent referenced non-primitive field.
- a computer program product comprising a set of program instructions stored in a storage medium and operable to permit a plurality of computers to carry out any of the above method(s).
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
Description
Claims
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 (2)
Publication Number | Publication Date |
---|---|
EP1934776A1 true EP1934776A1 (en) | 2008-06-25 |
EP1934776A4 EP1934776A4 (en) | 2009-05-06 |
Family
ID=37942203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP06790320A Withdrawn EP1934776A4 (en) | 2005-10-10 | 2006-10-05 | Replication of object graphs |
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)
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 (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995008809A2 (en) * | 1993-09-24 | 1995-03-30 | Oracle Corporation | Method and apparatus for data replication |
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 |
WO2003084116A1 (en) * | 2002-03-25 | 2003-10-09 | Eternal Systems, Inc. | Transparent consistent semi-active and passive replication of multithreaded application programs |
Family Cites Families (7)
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 |
US5829001A (en) * | 1997-01-21 | 1998-10-27 | Netiq Corporation | Database updates over a network |
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 |
SE521456C2 (en) * | 1998-12-15 | 2003-11-04 | Ericsson Telefon Ab L M | Method and apparatus of a distributed system |
JP2001188763A (en) * | 1999-12-28 | 2001-07-10 | Toshiba Corp | Distributed object system |
WO2005103928A1 (en) * | 2004-04-22 | 2005-11-03 | Waratek Pty Limited | Multiple computer architecture with replicated memory fields |
-
2006
- 2006-10-05 EP EP06790320A patent/EP1934776A4/en not_active Withdrawn
- 2006-10-05 WO PCT/AU2006/001450 patent/WO2007041765A1/en active Application Filing
- 2006-10-05 JP JP2008534815A patent/JP2009512030A/en active Pending
- 2006-10-05 CN CN2006800374427A patent/CN101283342B/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995008809A2 (en) * | 1993-09-24 | 1995-03-30 | Oracle Corporation | Method and apparatus for data replication |
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 |
WO2003084116A1 (en) * | 2002-03-25 | 2003-10-09 | Eternal Systems, Inc. | Transparent consistent semi-active and passive replication of multithreaded application programs |
Non-Patent Citations (2)
Title |
---|
LITTLE M C ET AL: "Maintaining information about persistent replicated objects in a distributed system" PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS. PITTSBURGH, MAY 25 - 28, 1993; [PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS], LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, vol. CONF. 13, 25 May 1993 (1993-05-25), pages 491-498, XP010095684 ISBN: 978-0-8186-3770-4 * |
See also references of WO2007041765A1 * |
Also Published As
Publication number | Publication date |
---|---|
CN101283342B (en) | 2010-09-08 |
JP2009512030A (en) | 2009-03-19 |
CN101283342A (en) | 2008-10-08 |
WO2007041765A1 (en) | 2007-04-19 |
EP1934776A4 (en) | 2009-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7761670B2 (en) | Modified machine architecture with advanced synchronization | |
US7996627B2 (en) | Replication of object graphs | |
US7739349B2 (en) | Synchronization with partial memory replication | |
US20070100828A1 (en) | Modified machine architecture with machine redundancy | |
US7581069B2 (en) | Multiple computer system with enhanced memory clean up | |
US20080134189A1 (en) | Job scheduling amongst multiple computers | |
US20080120478A1 (en) | Advanced synchronization and contention resolution | |
US8122198B2 (en) | Modified machine architecture with partial memory updating | |
US20080133859A1 (en) | Advanced synchronization and contention resolution | |
EP1934776A1 (en) | Replication of object graphs | |
US7958322B2 (en) | Multiple machine architecture with overhead reduction | |
AU2006301912A1 (en) | Replication of object graphs | |
AU2006301909B2 (en) | Modified machine architecture with partial memory updating | |
AU2006303865B2 (en) | Multiple machine architecture with overhead reduction | |
AU2006301910B2 (en) | Multiple computer system with enhanced memory clean up | |
EP1934774A1 (en) | Modified machine architecture with partial memory updating | |
WO2007041763A1 (en) | Multiple computer system with enhanced memory clean up | |
AU2006301911B2 (en) | Failure resistant multiple computer system and method | |
WO2007045014A1 (en) | Multiple machine architecture with overhead reduction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20080328 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU LV MC NL PL PT RO SE SI SK TR |
|
AX | Request for extension of the european patent |
Extension state: AL BA HR MK RS |
|
A4 | Supplementary search report drawn up and despatched |
Effective date: 20090403 |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06F 15/16 20060101AFI20070618BHEP Ipc: G06F 9/44 20060101ALI20090330BHEP Ipc: G06F 12/00 20060101ALI20090330BHEP |
|
17Q | First examination report despatched |
Effective date: 20090706 |
|
RIN1 | Information on inventor provided before grant (corrected) |
Inventor name: HOLT, JOHN, MATTHEW |
|
RIC1 | Information provided on ipc code assigned before grant |
Ipc: G06F 9/44 20060101ALI20170105BHEP Ipc: G06F 9/52 20060101ALI20170105BHEP Ipc: G06F 9/46 20060101AFI20170105BHEP |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION HAS BEEN WITHDRAWN |
|
18W | Application withdrawn |
Effective date: 20170331 |