[gclist] memory protections and system calls

Hans Boehm boehm@hoh.mti.sgi.com
Wed, 3 Jul 1996 14:04:42 -0700


I'm not quite sure I understand how this technique works:

Let's assume we have a page that's written near the beginning of program
execution, never paged out, and never written again.

It will always have to look dirty to the OS, just in case it's paged out.  Thus
when I flush things to disk, the device driver will be requested to write it
out.  This fails to give me the information which I need, which is usually
something like:  "Was it written since the last time I asked?"

I think this is actually the essential issue with a kernel dirty-bit
implementation.  The kernel really needs to update a dirty-bit map in which
pages not written since "the last time I asked" look clean.  Paging decisions
need to OR this map with another one that captures old information.

(Note that a number of SVR4 systems actually define interfaces for this.  It's
just that the implementations tend to be either slow or nonexistent.  Look for
PIOCOPENPD in the /proc man page on your favorite SVR4-based system, if there
is such a thing.)

Hans

Standard disclaimer ...


-- 
Hans-Juergen Boehm
boehm@mti.sgi.com