KeyKOS design puzzle - shared object
Thu, 21 Jan 1999 09:40:21 -0800
I have a design problem looking for a solution.
I want to create an object X to be shared among a diverse set of users. I
want to know when all the users are finished using the object, so I can
reclaim it. A user can explicitly say he's done with the object. Also, if a
user disappears because his space bank is zapped, he should be considered
done with the object.
How does one implement this in the KeyKOS/EROS architecture? Or, why is it a
bad idea to want this semantics, and what alternative do you suggest? It
appears that this would be a frequent requirement. In KeyKOS, we didn't get
far enough to have to worry seriously about reclaiming old stuff.
Stop reading now if you want to think about this without being influenced by
my proposed solution below.
I believe anything can be implemented in KeyKOS, and this is no exception.
Here's one way it can be done. When user U begins to use X, he registers
with X and passes a space bank. X creates a domain specific to U out of X's
bank, and creates a node specific to U out of U's bank. X places a resume
key to the domain in the node. U gets back a key that serves to identify him
to X, probably a red segment key to the node. X keeps a count of the number
of users registered.
If U's bank is zapped, the resume key in the node will be invoked. The
domain will decrement X's reference count, and then destroy itself. U can
also explicitly deregister by calling X and passing the identification key.
This seems like a lot of storage to implement what is really just a
reference count. Is there anything better?
Charles Landau <http://www.macslab.com/charlie.html>