Using the zero mapped page

William Burrow (
Mon, 6 Jan 1997 23:43:36 -0400 (AST)

It seems to me that attempting to write a zero value to a page that is
not yet allocated (ie using the zero mapped page), causes a new page to
be zeroed and assigned to the process. This seems somewhat silly when
one wants to write a zero to that page! It seemed to me that the kernel
could examine the value that is going to be assigned to the page, and not
do anything if it is a zero but return or perform its usual action if the
value is non-zero.

It occurs to me however, that perhaps the kernel would receive a page
fault everytime such a zero value assignment might occur, and further,
the kernel might not be aware of the value that is going to be put into
the page. The former might be a severe performance penalty (is it?) and
the latter would forbid this from happening.

The reason a user level solution might not be implemented is that someone
is using published libraries of some type, and may not wish to change how
they work (particularly if they are FORTRAN based, which is often where the
huge memory hogging stuff comes from).

So, I would like to know if it is technically feasible to detect whether
the kernel needs to assign a page or not depending on whether the value
to be stored is zero or not, and what kind of performance penalty there
might be, if any.

William Burrow  --  Fredericton Area Network, New Brunswick, Canada
Copyright 1997 William Burrow  
This line left intentionally blank.
And the one below it.