Subject: Re: Replacement for grep(1) (part 2)
To: Brian F. Feldman <green@FreeBSD.org>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: tech-userlevel
Date: 07/13/1999 10:53:48
On Tue, 13 Jul 1999 10:11:14 -0400 (EDT)
"Brian F. Feldman" <green@FreeBSD.org> wrote:
> > SVR4 has MAP_NORESERVE option for mmap(2) for this.
> > So, default behaivour don't have to be overcommitment.
>
> Isn't that just like mmap()ing then mlock()ing the range? That would
> keep it in core.
No, it's not the same thing. On a system which does backing store
accounting, the mmap() will fail if you don't specify MAP_NORESRVE
and there isn't enough backing store.
Also, MAP_NORESERVE can affect things which happen in the future, i.e.
it "sticks" to the mapping. Consider:
addr = mmap file size MAP_PRIVATE PROT_READ <- no swap resources
required
mprotect addr size PROT_READ|PROT_WRITE <- swap resources now
required
The mprotect() could fail in a system that doesn't overcommit, unless
MAP_NORESERVE is specified in the mmap() call.
-- Jason R. Thorpe <thorpej@nas.nasa.gov>