On Thu, Jul 25, 2013 at 5:18 PM, <[email protected]> wrote: > On Thu, 25 Jul 2013 16:57:44 -0700, kernel neophyte said: > > > I am sorry, its still not clear to me. All I am asking is I want to know > > and understand how mmap works, given an address *X*, how does the Linux > > kernel figure out that *X* is an mmaped page? > > Before you ask *how* it does it, first figure out if it does it *at all*. > > The reason you can't figure out how the swami is levitating is because > they aren't actually levitating at all. >
:-) Good one! > > Is there a special flag in > > the page table entry? > > No, because no flag is needed. > > > Does the access generate a page fault ? > > Maybe, maybe not. If the page is resident in memory there's no page fault. > And if it's not resident, it gets paged in from wherever the backing page > happens to be. > > > If so, > how > > does the handler find out it is an mmaped address? > > The handler doesn't *care* if it's mmaped. All it has to know is (1) this > page isn't in memory, (2) it needs to be in memory, and (3) so please > schedule > the I/O to read it from block NNNN of device XXYY just like any *other* > page being read in because of a page fault. > > Thanks, I get it now. > The *only* thing "magical" about an mmap'ed page is that the pointer to > where > to read/write it might (sometimes) point at someplace that's not a swap > space. Though for some uses of mmap(), it *does* point at swap space (for instance, > the anonymous pages created by mmap() as used from malloc() in glibc). > > Thanks I get it now. -Neo
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
