[gclist] Four color distributed objects algorithm.
Marc Shapiro
shapiro@prof.inria.fr
Tue, 19 Mar 1996 11:06:36 +0100
|| Date: Fri, 8 Mar 1996 13:45:50 -0600
|| From: cef@geode.geodesic.com (Charles Fiterman)
||
|| When processor A requests a reference to something on processor B,
|| B sends out that reference and stores the fact on a list of pending
|| new references.
||
|| When processor A blacks a grey object that contains a reference to
|| another machine it saves the fact on a list for that machine. When
|| processor A completes a collection cycle it sends a message to B
|| saying which references it has greyed and which it recieved since
|| the last such message but which are now white.
Let's call this a "mark" message.
|| Processor B then uses this list to grey used items and mark reference
|| messages as recieved. Unrecieved reference messages are resent and
|| their objects greyed.
So: collection on processor B cannot proceed past the mark phase until it has
received the mark message from A. Symmetrically (supposing there are
references from B to A) the collector on A cannot proceed past its mark phase
until it has received the mark message from B. Since the mark message from B
might cause more objects to be marked by A, A may have to send another mark
message to B. (And symmetrically of course.) So, neither A nor B may
continue past the mark phase until each one has received the LAST mark message
from the other. Ensuring this requires a termination protocol or a global
synchronization between all processors.
Marc