[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-newbie
Subject:    Re: mmap confusion
From:       Michał Nazarewicz <m.nazarewicz () samsung ! com>
Date:       2010-09-20 9:14:21
Message-ID: op.vjbql71x7p4s8u () pikus
[Download RAW message or body]

On Mon, 20 Sep 2010 07:33:05 +0200, Rajat Jain <rajatjain@juniper.net> wrote:

> 1) If the backing file is /dev/mem or a device file, then at the time of mmap(),
> the page table entries / TLB entries are set up such that the virtual address in
> the user space, maps to the actual physical address desired. And the thus job
> is done. This case is clear.

Page table entries don't need to be set immediately but essentially that is the
case.

> 2) The other case is that when the file is actually a datafile present in a file
> system lets say on a SATA disk. Now, for each load / store in the application,
> some driver code needs to trigger that will program the SATA controller registers
> and do n number of thinks to initiate the diska read / write transaction. How is
> this achieved? Because application is not making any System calls. Its just having
> load / store instructions.

When a "normal" file is mapped no page entries are set.  As an effect, when user
space refers to the mapped area a page fault is triggered.  This is handled by
kernel which reads a page from the disk and adds a proper page table entry.

On writes, such a page is marked as dirty (either CPU supports that directly,
or kernel simulates it by setting page read-only so that on write an page fault
is generated again).  When process terminates all dirty pages are written back to
disk.

-- 
Best regards,                                        _     _
| Humble Liege of Serenely Enlightened Majesty of  o' \,=./ `o
| Computer Science,  Michał "mina86" Nazarewicz       (o o)
+----[mina86*mina86.com]---[mina86*jabber.org]----ooO--(_)--Ooo--
--
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic