Failure resistant multiple computer system and method
Abstract
The updating of only some memory locations in a multiple computer environment in which at least one applications program ( 50 ) executes simultaneously on a plurality of computers M 1 , M 2 . . . Mn each of which has a local memory, is disclosed. Memory locations (A, B, D, E, X) in said local memory are categorized into two groups. The first group of memory locations (X 1 , X 2 , . . . Xn, A 1 , A 2 , . . . An) are each present in other computers. The second group of memory locations (B, E) are each present only in the computer having the local memory including the memory location. Changes to the contents of memory locations in the first group only are transmitted to all other computers. A computer failure detection mechanism is disclosed to prevent updating of any first group memory locations of any failed computer.
Claims
exact text as granted — not AI-modified1 . In a multiple computer system comprising a plurality of computers, each including a local processor and a local memory coupled with the local processor, and including a first computer and a second computer interconnected via a communications link or network operating in a replicated shared memory arrangement, a method of classifying said local memory(ies) a detecting a failure of at least one of said computers comprising:
classifying said local memories into a first category of memory locations each of which is replicated on two or more computers of said plurality of computers; classifying said local memories into a second category of memory locations each of which is present only in the specific one of said plurality of computers in which each said second category of memory location is physically located; and detecting a failure of at least one of said computers.
2 . A method as in claim 1 , further including:
a. maintaining a first table listing or recording said first category memory locations.
3 . A method as in claim 2 further including:
a. maintaining a second table listing or recording said second category memory locations.
4 . A method as in claim 1 , further including:
a. maintaining a first table listing or recording said first category memory locations; b. maintaining a second table listing or recording said second category memory locations; and c. said first table and said second table are the same table or are different tables.
5 . A method as in claim 2 , further including:
a. not maintaining a table listing or recording said second category memory locations.
6 . A method as in claim 1 , further including:
a. maintaining at least one of a first table listing or recording said first category memory locations, and a second table listing or recording said second category memory locations, on a further server computer.
7 . A method as in claim 1 , further including:
a. maintaining multiple ones of a first table listing or recording said first category memory locations, and a second table listing or recording said second category memory locations, at least one in each of said multiple computers.
8 . A method as in claim 1 , wherein said first category memory locations of a said computer do not access or refer to any second category memory locations of the same computer.
9 . A method as in claim 8 , wherein said access includes memory addresses of said second category memory locations.
10 . A method as in claim 8 , wherein said access includes pointers, references, handles, or links to or of said second category memory locations.
11 . A method as in claim 1 , wherein said memory locations comprise an object or objects.
12 . A method as in claim 1 , wherein said memory locations comprise a class or classes.
13 . A method as in claim 1 , wherein said memory locations comprise object field(s) or class field(s).
14 . A method as in claim 1 , wherein said memory locations comprise data structure(s).
15 . A method as in claim 1 , wherein said memory locations comprise array data structure(s).
16 . A method as in claim 1 , wherein said memory locations comprise elements of array data structure(s).
17 . A method as in claim 1 , wherein said memory locations comprise libraries, linked libraries, and/or dynamically linked libraries.
18 . A method as in claim 1 , further including:
a. maintaining a replication table listing or recording the ones of said multiple computers on which a said first category memory location is replicated.
19 . A method as in claim 18 , further including:
a. maintaining one said replication table for each said first category memory location.
20 . A method as in claim 18 , further including:
a. maintaining one said replication table for a plurality of first category memory locations.
21 . A method as in claim 20 , further including:
a. maintaining at least one said replication table for each plurality of first category memory locations of possible multiple pluralities.
22 . A method as in claim 20 , wherein said plurality of first category memory locations are plural memory locations of a related set of memory locations.
23 . A method as in claim 22 , wherein said related set of memory locations are an array of memory locations.
24 . A method as in claim 23 , wherein said array of memory locations comprise an array data structure.
25 . A method as in claim 22 , wherein said related set of memory locations are memory locations of an object or class.
26 . A method as in claim 25 , wherein said memory locations of an object or class are object fields or variables, or class fields or variables.
27 . A method as in claim 18 , wherein said replication table and either or both of, said table(s) of said first category memory locations and said table(s) of said second category memory locations, are a single or the same table.
28 . A method as in claim 18 , further including:
a. maintaining multiple said replication tables, one in each of said multiple computers.
29 . A method as in claim 18 , further including:
a. maintaining multiple said replication tables, one of each said multiple tables in each of said multiple computers.
30 . A method as in claim 18 , further including:
a. maintaining multiple said replication tables in each of said multiple computers.
31 . A method as in claim 18 , further including:
a. maintaining one said replication table, for all said multiple computers on a further server computer.
32 . A method as in claim 1 , further including:
a. substantially simultaneously updating said first category memory locations of the other ones of said computers with any changes made to a first category memory location of any one of said computers.
33 . A method as in claim 32 , further including:
a. utilizing said replication table(s) to determine which ones of said multiple computers are to be said substantially simultaneously updated.
34 . A method as in claim 32 , further including:
a. not updating said second category memory locations of the other ones of said computers with any changes made to a second category memory location of any one of said computers.
35 . A method as in claim 32 , wherein said substantially simultaneous updating includes updating a first category memory locations of the other ones of said computers on which said first category memory locations is replicated, with any changes made to said first category memory locations of any one of said computers.
36 . A method as in claim 32 , wherein said substantially simultaneous updating excludes updating said first category memory locations of the other ones of said computers on which said first category memory locations is not replicated.
37 . A method as in claim 1 , including the further steps of:
a. detecting failure of any one or a plurality of said multiple computers.
38 . A method as in claim 37 , wherein said failure includes discontinued or erroneous operation of said one(s) of said multiple computers.
39 . A method as in claim 37 , wherein said detecting failure includes detecting failure by at least one of the group of failure detection modes consisting of power supply failure, communication link failure, failure to respond to interrogation, and failure to regularly report as expected.
40 . A method as in claim 37 , including the further step of:
a. not substantially simultaneously updating (or discontinuing the substantially simultaneous updating of) said failed computer(s) with any changes made to first category memory location(s).
41 . A method as in claim 37 , including the further step of:
a. not substantially simultaneously updating (or discontinuing the substantially simultaneous updating of) said failed computer(s) with any changes made to first category memory location(s) previously replicated on said failed computer(s) prior to (or upon occasion of) said failure.
42 . A method as in claim 37 , including the further step of:
a. upon occasion of said failure by one(s) of said multiple computers, updating said table(s) of first category memory location(s) to exclude (or remove) said failed one(s) of said multiple computers.
43 . A method as in claim 37 , including the further step of:
a. upon occasion of said failure by one(s) of said multiple computers on which said first category memory location(s) is (or were) replicated, updating said table(s) of first category memory location(s) to exclude (or remove) said failed one(s) of said multiple computers.
44 . A method as in claim 37 , including the further step of:
a. upon occasion of said failure by one(s) of said multiple computers, updating said replication table(s) to exclude (or remove) said failed one(s) of said multiple computers.
45 . A method as in claim 37 , including the further step of:
a. upon occasion said failure by one(s) of said multiple computers on which said first category memory location is (or were) replicated, updating said replication table(s) to exclude (or remove) said failed one(s) of said multiple computers.
46 . A method as in claim 42 , wherein said updating of said table(s) includes updating said tables on each non-failed one of said multiple computers.
47 . A method as in claim 42 , wherein said updating of said table(s) includes updating said table(s) on each non-failed one of said multiple computers in which said first category memory location is replicated.
48 . A method as in claim 46 , including the further step of:
a. not updating said table(s) of said first category memory location on each non-failed one of said multiple computers in which said first category memory location is not (or was not) replicated.
49 . A method as in claim 44 , wherein said updating of said replication table(s) includes updating said replication table(s) on each non-failed one of said multiple computers.
50 . A method as in claim 44 , wherein said updating of said replication table(s) includes updating said replication table(s) on each non-failed one of said multiple computers in which said existing first category memory location(s) is replicated.
51 . A method as in claim 49 , including the further step of:
a. not updating said replication table(s) of said first category memory location on each non-failed one of said multiple computers in which said first category memory location is not (or was not) replicated.
52 . A method as in claim 1 , wherein said local memory(ies) of each said computer are independent of said local memory(ies) of each other computer.
53 . A method as in claim 1 , wherein said local processors may only access said local memory(ies) of the same computer in which the local processor is located.
54 . A method as in claim 1 , wherein at least a first application program written to operate on a single one of said computers, is operating substantially simultaneously on different ones of said multiple computers.
55 . A method as in claim 54 , wherein said application program operating substantially simultaneously on each of said different ones of said computers, may only access said local memory(ies) of the same computer.
56 . A method as in claim 55 , wherein said access is satisfied by said local memory(ies) of the same computer independently of (or without the aid of) said local memory(ies) of any other computer.
57 . A method as in claim 55 , wherein said access includes reading and/or writing content or values stored or resident within said local memory(ies) of the same computer.
58 . A method as in claim 56 , wherein said access includes reading and/or writing content or values stored or resident within said local memory(ies) of the same computer.
59 . A method as in claim 55 , wherein said access is restricted to reading and/or writing content or values stored or resident within said local memory(ies) of the same computer.
60 . A method as in claim 56 , wherein said access is restricted to reading and/or writing content or values stored or resident within said local memory(ies) of the same computer.
61 . A method as in claim 55 , wherein said access includes reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer.
62 . A method as in claim 56 , wherein said access includes reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer.
63 . A method as in claim 57 , wherein said access includes reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer.
64 . A method as in claim 55 , wherein said access is restricted to reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer.
65 . A method as in claim 56 , wherein said access is restricted to reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer.
66 . A method as in claim 57 , wherein said access is restricted to reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer.
67 . A method as in claim 55 , wherein at least one memory location and/or memory value of said application program is substantially similarly replicated in said local memory(ies) of said different ones of said multiple computers.
68 . A method as in claim 64 , wherein said substantially similarly replicated memory location(s) and/or value(s) are stored non-identically in said local memory(ies) of said different ones of said multiple computers.
69 . A method as in claim 65 , wherein said substantially similarly replicated memory location(s) and/or memory value(s) are updated through in-due-course updating to remain substantially similar upon occasion of any one of said plurality of computers simultaneously operating said application program modifying, or causing to be modified, the value(s) or content(s) of said substantially similarly replicated memory location(s) and/or memory value(s).
70 . A method as in claim 65 , wherein each said substantially similarly replicated memory location(s) and/or value(s) of each one of said multiple computers is identified with a substantially similar identifier.
71 . A method as in claim 69 , wherein said in-due-course updating provides that said replicated memory locations are updated to remain substantially similar upon occasion of any one of said computers simultaneously operating said application program causing modification of the contents of said replicated memory location.
72 . A method as in claim 1 , wherein:
said local memory(ies) of each said computer are independent of said local memory(ies) of each other computer; said local processors may only access said local memory(ies) of the same computer in which the local processor is located; at least a first application program written to operate on a single one of said computers, is operating substantially simultaneously on different ones of said multiple computers; said application program operating substantially simultaneously on each of said different ones of said computers, may only access said local memory(ies) of the same computer; said access is satisfied by said local memory(ies) of the same computer independently of (or without the aid of) said local memory(ies) of any other computer; said access includes reading and/or writing content or values stored or resident within said local memory(ies) of the same computer, or said access is restricted to reading and/or writing content or values stored or resident within said local memory(ies) of the same computer; said access includes reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer, or said access is restricted to reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer; at least one memory location and/or memory value of said application program is substantially similarly replicated in said local memory(ies) of said different ones of said multiple computers; said substantially similarly replicated memory location(s) and/or value(s) are stored non-identically in said local memory(ies) of said different ones of said multiple computers; said substantially similarly replicated memory location(s) and/or memory value(s) are updated through in-due-course updating to remain substantially similar upon occasion of any one of said plurality of computers simultaneously operating said application program modifying, or causing to be modified, the value(s) or content(s) of said substantially similarly replicated memory location(s) and/or memory value(s); each said substantially similarly replicated memory location(s) and/or value(s) of each one of said multiple computers is identified with a substantially similar identifier; and said in-due-course updating provides that said replicated memory locations are updated to remain substantially similar upon occasion of any one of said computers simultaneously operating said application program causing modification of the contents of said replicated memory location.
73 . A method as in claim 51 , wherein:
said local memory(ies) of each said computer are independent of said local memory(ies) of each other computer; said local processors may only access said local memory(ies) of the same computer in which the local processor is located; at least a first application program written to operate on a single one of said computers, is operating substantially simultaneously on different ones of said multiple computers; said application program operating substantially simultaneously on each of said different ones of said computers, may only access said local memory(ies) of the same computer; said access is satisfied by said local memory(ies) of the same computer independently of (or without the aid of) said local memory(ies) of any other computer; said access includes reading and/or writing content or values stored or resident within said local memory(ies) of the same computer, or said access is restricted to reading and/or writing content or values stored or resident within said local memory(ies) of the same computer; said access includes reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer, or said access is restricted to reading and/or writing content or values of real or virtual memory addresses of or resident within said local memory(ies) of the same computer; at least one memory location and/or memory value of said application program is substantially similarly replicated in said local memory(ies) of said different ones of said multiple computers; said substantially similarly replicated memory location(s) and/or value(s) are stored non-identically in said local memory(ies) of said different ones of said multiple computers; said substantially similarly replicated memory location(s) and/or memory value(s) are updated through in-due-course updating to remain substantially similar upon occasion of any one of said plurality of computers simultaneously operating said application program modifying, or causing to be modified, the value(s) or content(s) of said substantially similarly replicated memory location(s) and/or memory value(s); each said substantially similarly replicated memory location(s) and/or value(s) of each one of said multiple computers is identified with a substantially similar identifier; and said in-due-course updating provides that said replicated memory locations are updated to remain substantially similar upon occasion of any one of said computers simultaneously operating said application program causing modification of the contents of said replicated memory location.
74 . A method as in claim 1 , further comprising:
maintaining a replication table listing or recording the ones of said multiple computers on which a said first category memory location is replicated; substantially simultaneously updating said first category memory locations of the other ones of said computers with any changes made to a first category memory location of any one of said computers; detecting failure of any one or a plurality of said multiple computers; not substantially simultaneously updating (or discontinuing the substantially simultaneous updating of) said failed computer(s) with any changes made to first category memory location(s); upon occasion of said failure by one(s) of said multiple computers, updating said table(s) of first category memory location(s) to exclude (or remove) said failed one(s) of said multiple computers; and said updating of said replication table(s) includes updating said replication table(s) on each non-failed one of said multiple computers.
75 . A computer program stored on a computer readable memory device comprising instructions which, when executed on a computer, perform in at least one single computer capable of interoperating with at least one other computer coupled to at least one said single computer at least intermittently via a communications network to form a multiple computer system having a plurality of computers wherein each computer has a local memory and the multiple computer system operating in a replicated shared memory arrangement, a method of classifying said local memory(ies) comprising the steps of:
classifying said local memories into a first category of memory locations each of which is replicated on two or more computers of said plurality of computers; and classifying said local memories into a second category of memory locations each of which is present only in the specific one of said plurality of computers in which each said second category of memory location is physically located; and detecting a failure of at least one of said computers.
76 . A multiple computer system comprising:
a plurality of computers, each including a local processor and a local memory coupled with the local processor, and including a first computer and a second computer interconnected via a communications link or network operating in a replicated shared memory arrangement, a method of classifying said local memory(ies) comprising:
classifying said local memories into a first category of memory locations each of which is replicated on two or more computers of said plurality of computers;
classifying said local memories into a second category of memory locations each of which is present only in the specific one of said plurality of computers in which each said second category of memory location is physically located; and
detecting a failure of at least one of said computers.Join the waitlist — get patent alerts
Track US2008215928A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.