On Wed, Jun 02, 1999 at 11:16:32AM -0700, Jason Thorpe wrote:
> On Tue, 1 Jun 1999 18:08:35 -0700
> Arun Sharma <[email protected]> wrote:
>
> > Going through the 4.4 BSD book, I learnt that the purpose of the pv_table
> > is to be able to locate all the mappings to a given physical page.
> >
> > However, comparing this to the Linux approach, which chains vm_area_struct
> > (analogous to vm_map_entry in FreeBSD) together to locate the shared
> > mappings, it appears to me that the Linux approach is more space efficient.
> >
> > So why not eliminate pv_table and chain vm_map_entries together to
> represent
> > the sharing information ?
>
> ....because in the Mach VM system (which is what FreeBSD is derived from),
> map entries may represent several virtual (and thus physical) pages.
>
That's right. But by chaining vm_map_entries, you don't lose any sharing
information. You can _infer_ the same information by walking the
vm_map_entries. By keeping the pv_table, you're making it explicit, which
makes certain operations very fast - at the cost of some space.
The overhead seems to be a constant of 0.4% + sizeof(pv_entry) * degree
of sharing. Sounds like a good trade off to me.
-Arun
To Unsubscribe: send mail to [email protected]
with "unsubscribe freebsd-hackers" in the body of the message