On Wed, Jun 02, 1999 at 11:16:32AM -0700, Jason Thorpe wrote: > On Tue, 1 Jun 1999 18:08:35 -0700 > Arun Sharma <adsha...@home.com> 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 majord...@freebsd.org with "unsubscribe freebsd-hackers" in the body of the message