Multiple computer system with enhanced memory clean up
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 accessible by other computers. The second group of memory locations (B, E) are each accessible only by 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 demotion mechanism is disclosed to demote memory locations in the first group into the second group in the event that application program execution means that a memory location in said first group is no longer referenced by another memory location in another 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) and demoting any said first category memory locations under predetermined conditions 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 demoting any said first category memory locations under predetermined conditions.
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 step of:
a. demoting any said first category memory locations, when said demoted first category memory locations have been deleted on all except one of said multiple computers.
38 . A method as in claim 1 , including the further step of:
a. demoting any said first category memory locations, when said demoted first category memory locations are no longer are replicated on two or more of said multiple computers.
39 . A method as in claim 1 , including the further step of:
a. demoting any said first category memory locations, when said demoted first category memory locations are marked for deletion on all except one of said computers.
40 . A method as in claim 1 , including the further step of:
a. demoting any said first category memory locations, of a one of said computers, when said demoted first category memory locations have been deleted on all other ones of said computers.
41 . A method as in claim 1 , including the further step of:
a. demoting any said first category memory locations, of a one of said computers, when said demoted first category memory locations are marked for deletion on all other ones of said computers.
42 . A method as in claim 37 , wherein said all other ones of said computers comprise those computers on which said demoted first category memory locations are or were replicated.
43 . A method as in claim 37 , wherein said deletion includes reclamation of, finalization of, garbage collection of, erasing of, or freeing or cleaning up of, the value(s) or content(s) of said demoted first category memory locations.
44 . A method as in claim 37 , wherein said deletion includes removing said demoted first category memory locations from one or more said table(s) of first category memory locations of one or more said machines.
45 . A method as in claim 37 , wherein said demoting includes assigning said demoted first category memory locations to said second category memory locations.
46 . A method as in claim 37 , wherein said demoting includes assigning said demoted first category memory locations to said second category memory locations on the last one of said computers in which said demoted first category memory locations reside, or have not been deleted or marked for deletion, are physically located.
47 . A method as in claim 46 , wherein said demoting includes re-classifying said demoted first category memory locations to become second category memory locations.
48 . A method as in claim 37 , wherein said demoting includes updating said table of said second category memory locations to include said demoted first category memory locations.
49 . A method as in claim 37 , wherein said demoting includes updating said table of said first category memory locations to exclude said demoted first category memory locations.
50 . A method as in claim 37 , including the further step of:
a. updating said table(s) of said first category memory locations on each one of said computers, to exclude said demoted first category memory locations.
51 . A method as in claim 37 , including the further step of:
a. updating said table(s) of said first category memory locations on each one of said computers in which said demoted first category memory locations are or were replicated, to exclude said demoted first category memory locations.
52 . A method as in claim 51 , including the further step of:
a. updating said table(s) of said second category memory locations on the last one of said computers in which said demoted first category memory locations resides, to include said demoted second category memory locations.
53 . A method as in claim 52 , wherein said last one of said computers in which said first category memory locations resides, includes said last one of said computers in which said demoted first category memory locations has not been deleted.
54 . A method as in claim 52 , wherein said last one of said computers in which said first category memory locations resides, includes said last one of said computers in which said demoted first category memory locations has not been marked for deletion.
55 . A method as in claim 54 , wherein said deletion includes reclamation of, finalization of, garbage collection of, erasing of, or freeing or cleaning up of, the value(s) or content(s) of said demoted first category memory locations.
56 . A method as in claim 55 , wherein said demoting includes updating said replication table(s) to exclude said demoted first category memory locations.
57 . A method as in claim 56 , including the further step of:
a. updating said replication table(s) to exclude the ones of said multiple computers on which said demoted first category memory locations are deleted or marked for deletion.
58 . A method as in claim 56 , including the further step of:
a. updating said replication table(s) to exclude the ones of said multiple computers on which said demoted first category memory locations are no longer replicated.
59 . A method as in claim 57 , including the further step of:
a. updating said replication table(s) on each one of said computers.
60 . A method as in claim 57 , including the further step of:
a. updating said replication table(s) on each one of said computers in which said demoted first category memory locations is or was replicated.
61 . A method as in claim 57 , including the further step of:
a. not updating said replication table(s) on each one of said computers in which said demoted first category memory locations is not or was not replicated.
62 . A method as in claim 1 , including the further steps of:
a. not substantially simultaneously updating, or discontinuing the substantially simultaneous updating of said demoted first category memory locations of other ones of said computers with any changes made to said demoted first category memory location.
63 . A method as in claim 1 , including the further step of:
a. upon occasion of a said first category memory location no longer being replicated by one(s) of said multiple computers, updating said table(s) of first category memory locations to exclude or remove said one(s) of said multiple computers.
64 . A method as in claim 1 , including the further step of:
a. Upon occasion of a said first category memory location not being replicated by one(s) of said multiple computers on which said first category memory location was replicated, updating said table(s) of first category memory locations to exclude or remove said one(s) of said multiple computers.
65 . A method as in claim 1 , including the further step of:
a. upon occasion of a said first category memory location being deleted by one(s) of said multiple computers on which said first category memory location is replicated, updating said table(s) of first category memory locations to exclude or remove said one(s) of said multiple computers.
66 . A method as in claim 1 , including the further step of:
a. upon occasion of a said first category memory location no longer being replicated by one(s) of said multiple computers, updating said replication table(s) to exclude or remove said one(s) of said multiple computers.
67 . A method as in claim 1 , including the further step of:
a. upon occasion of a said first category memory location not being replicated by one(s) of said multiple computers on which said first category memory location was replicated, updating said replication table(s) to exclude or remove said one(s) of said multiple computers.
68 . A method as in claim 1 , including the further step of:
a. upon occasion of a said first category memory location being deleted by one(s) of said multiple computers on which said first category memory location is replicated, updating said table(s) of first category memory locations to exclude or remove said one(s) of said multiple computers.
69 . A method as in claim 63 , wherein said deletion includes reclamation of, finalization of, garbage collection of, erasing of, clearing of, or freeing or cleaning up of, the value(s) or content(s) of said deleted first category memory locations.
70 . A method as in claim 69 , wherein said updating of said table(s) includes updating said tables on each one of said computers.
71 . A method as in claim 69 , wherein said updating of said table(s) includes updating said table(s) on each one of said computers in which said first category memory location is replicated.
72 . A method as in claim 70 , wherein said updating of said table(s) includes said one(s) of said multiple computers on which said first category memory location is deleted or no longer resides.
73 . A method as in claim 72 , including the further step of:
a. not updating said table(s) of said first category memory location on each one of said computers in which said first category memory location is not or was not replicated.
74 . A method as in claim 66 , wherein said updating of said replication table(s) includes updating said replication table(s) on each one of said computers.
75 . A method as in claim 66 , wherein said updating of said replication table(s) includes updating said replication table(s) on each one of said computers in which said existing first category memory locations is replicated.
76 . A method as in claim 74 , wherein said updating of said replication table(s) includes said one(s) of said multiple computers on which said first category memory location is deleted or no longer resides.
77 . A method as in claim 74 , including the further step of:
a. not updating said replication table(s) of said first category memory location on each one of said computers in which said first category memory location is not or was not replicated.
78 . A method as in claim 1 , including the further step of:
a. not executing (or performing) clean-up of said demoted first category memory locations until the last one of said computers deletes or marks for deletion said demoted first category memory locations.
79 . A method as in claim 1 , including the further step of:
a. not executing or performing clean-up of said demoted first category memory locations until all of said computers mark for deletion or have marked for deletion said demoted first category memory locations.
80 . A method as in claim 78 , including the further step of:
a. disabling clean-up prior to said demotion of said first category memory locations.
81 . A method as in claim 78 , including the further step of:
a. disabling clean-up prior to said demotion of said first category memory locations, by all other ones of said multiple computers.
82 . A method as in claim 78 , including the further step of:
a. disabling clean-up prior to said demotion of said first category memory locations, by all other ones of said multiple computers which are not the last one of said computers to delete or mark for deletion said demoted first category memory locations.
83 . A method as in claim 78 , including the further step of:
a. disabling clean-up prior to said demotion of said first category memory locations, by all other ones of said multiple computers which are not the last one of said multiple computers on which said demoted first category memory locations reside.
84 . A method as in claim 1 , including the further step of:
a. executing or performing clean-up of said demoted first category memory locations upon the last one of said computers deleting or marking for deletion said demoted first category memory locations.
85 . A method as in claim 1 , including the further step of:
a. executing or performing clean-up of said demoted first category memory locations upon the last one of said computers deleting or marking for deletion said demoted first category memory locations, by said last one of said computers.
86 . A method as in claim 1 , including the further step of:
a. not executing or performing clean-up of first category memory locations whilst said first category memory locations are replicated on at least two of said multiple computers.
87 . A method as in claim 1 , including the further step of:
a. not executing or performing clean-up of first category memory locations until said first category memory locations are no longer replicated on at least two of said multiple computers, and are marked for deletion or have been marked for deletion.
88 . A method as in claim 78 , including the further step of:
a. disabling clean-up whilst first category memory locations are replicated on at least two of said multiple computers.
89 . A method as in claim 1 , including the further step of:
a. executing or performing clean-up of first category memory locations when said first category memory locations are no longer replicated on at least two of said multiple computers, and are marked for deletion or have been marked for deletion.
90 . A method as in claim 78 , wherein said clean-up includes clean-up routines or operations.
91 . A method as in claim 78 , wherein said disabling clean-up includes disabling execution or operation of clean-up routines.
92 . A method as in claim 91 , wherein said clean-up routines are associated with said demoted first category memory locations or said first category memory location.
93 . A method as in claim 92 , wherein said associated clean-up routines are object finalization routines or object de-constructor routines.
94 . A method as in claim 93 , wherein said demoted first category memory locations or said first category memory locations are objects or classes.
95 . A method as in claim 78 , only cleaning-up memory locations of said second category memory locations.
96 . A method as in claim 95 , only executing clean-up routines of said second category memory locations.
97 . A method as in claim 78 , including the further step of:
a. modifying said application program before, during, or after loading by inserting one or more disable clean-up operations, in order to affect said disabling clean-up.
98 . A method as in claim 97 , wherein said application program is modified in accordance with a procedure from a group of procedures consisting of re-compilation at loading, pre-compilation at loading, compilation prior to loading, just-in-time compilation, re-compilation after loading but before execution of the relevant portion of the application program, and re-compilation after execution of the relevant portion of the application program has commenced.
99 . A method as in claim 97 , wherein said modification procedures operate on each said computer.
100 . A method as in claim 99 , wherein said modified application program is transferred from a first computer to all other of said multiple computers, and loaded by said other multiple computers upon receipt or thereafter.
101 . 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.
102 . 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.
103 . 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.
104 . A method as in claim 103 , 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.
105 . A method as in claim 104 , 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.
106 . A method as in claim 104 , wherein said access includes reading and/or writing content or values stored or resident within said local memory(ies) of the same computer.
107 . A method as in claim 105 , wherein said access includes reading and/or writing content or values stored or resident within said local memory(ies) of the same computer.
108 . A method as in claim 104 , 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.
109 . A method as in claim 105 , 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.
110 . A method as in claim 104 , 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.
111 . A method as in claim 105 , 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.
112 . A method as in claim 106 , 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.
113 . A method as in claim 104 , 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.
114 . A method as in claim 105 , 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.
115 . A method as in claim 106 , 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.
116 . A method as in claim 104 , 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.
117 . A method as in claim 113 , 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.
118 . A method as in claim 114 , 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).
119 . A method as in claim 118 , 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.
120 . A method as in claim 118 , 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.
121 . 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); 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; and 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.
122 . 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; demoting any said first category memory locations, when said demoted first category memory locations have been deleted on all except one of said multiple computers; wherein said demoting includes updating said table of said second category memory locations to include said demoted first category memory locations; wherein said demoting includes updating said replication table(s) to exclude said demoted first category memory locations; not substantially simultaneously updating, or discontinuing the substantially simultaneous updating of said demoted first category memory locations of other ones of said computers with any changes made to said demoted first category memory location; upon occasion of a said first category memory location no longer being replicated by one(s) of said multiple computers, updating said table(s) of first category memory locations to exclude or remove said one(s) of said multiple computers; wherein said updating of said replication table(s) includes updating said replication table(s) on each one of said computers; not executing (or performing) clean-up of said demoted first category memory locations until the last one of said computers deletes or marks for deletion said demoted first category memory locations; and modifying said application program before, during, or after loading by inserting one or more disable clean-up operations, in order to affect said disabling clean-up.
123 . 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 demoting any said first category memory locations under predetermined conditions
124 . A computer program as in claim 123 , wherein the method further comprises at least one of the step of:
(i) demoting any said first category memory locations, when said demoted first category memory locations have been deleted on all except one of said multiple computers; (ii) demoting any said first category memory locations, when said demoted first category memory locations are no longer are replicated on two or more of said multiple computers; (iii) demoting any said first category memory locations, when said demoted first category memory locations are marked for deletion on all except one of said computers; and (iv) demoting any said first category memory locations of a one of said computers, when said demoted first category memory locations have been deleted on all other ones of said computers.
125 . 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: means for 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; means for 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 means for demoting any said first category memory locations under predetermined conditions.Join the waitlist — get patent alerts
Track US2008195682A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.