POS
Marcus G. Daniels
marcus@cathcart.sysc.pdx.edu
12 May 1997 01:01:41 -0700
>>>>> "BS" == BRIAN SPILSBURY <zhivago@iglou.com> writes:
MD> Suppose you do _everything_, can't these tiny commits of the stack
MD> just be roundoffs to set a bits in a dirty vector? Then after N of
MD> those things commit all the dirty pages?
BS> If you're happy to take the overhead of all persistent data going
BS> though a transactional databae and being written to the physical
BS> media on a change, then there won't be any disjointedness, but
BS> that's a fairly large hit.
I mean, in the extreme case, before pushSTACK(obj) actually pushes `obj', it
calls a startTransaction. The push occurs, and then a
endTransaction occurs. Clearly the cost of actually performing
these transactions all the time is very high.
But why can't `startTransaction' be defined like:
startTransaction ()
{
markPageAsDirty(StackPointer,PageVector);
transactionCount++;
}
and `endTransaction' by:
endTransaction()
{
if (transactionCount > transactionThreshold)
{
commmitDirtyPages(PageVector);
transactionCount = 0;
}
}