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;
    }
}