[gclist] Re: gclist-digest V3 #117
marc.shapiro@acm.org
marc.shapiro@acm.org
Thu, 19 Oct 2000 15:58:49 +0100 (BST)
|| Date: Wed, 18 Oct 2000 18:36:40 +0200
|| From: Stephane Letz <letz@grame.fr>
|| Subject: [gclist] Reference counter management in two different memory spaces
||
|| data is allocated in a shared memory area in
|| user space. A reference counting mechanism is used. [...] A
|| some point we need to copy the data structures when we are in a
|| context where the reference counter can not be accessed (more
|| precisely in kernel space). Later on, pointer to data structures
|| will be given back to user space processes.
You should look at algorithms for garbage collection in the presence of
replication. I can point you to my own work:
@InProceedings{gc:mv:rep:1406,
author = {Paulo Ferreira and Marc Shapiro},
title = {Modelling a Distributed Cached Store for Garbage Collection},
booktitle = {12th Euro.\ Conf.\ on Object-Oriented Prog.\ (ECOOP)},
year = 1998,
address = {Brussels (Belgium)},
month = jul,
note = {\url{http://www-sor.inria.fr/publi/MDCSGC_ecoop98.html}}
}
You can also look at Xavier Blondel's thesis "Gestion mémoire dans
PerDiS, un environnement persistant à grande échelle". It isn't
published yet but you can e-mail him at
<mailto:xavier.blondel@inria.fr>. There is also Yu and Cox's algorithm:
@InProceedings{gc:dsm:1380,
author = {Weimin Yu and Alan Cox},
title = {Conservative Garbage Collection on Distributed Shared Memory
Systems},
booktitle = icdcs,
year = 1996,
organization = {IEEE Computer Society},
address = {Hong Kong},
month = may,
pages = {402--410}
}
But that's probably more information than you need. From what you
describe, the following simple expedient should suffice: add one to the
reference count while the data structure is copied out to kernel space,
and subtract one after the kernel deallocates its copy.
Marc