Re: a question of mmap() of files into memory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm so late :)

On Sun, Nov 23, 2008 at 4:17 PM, Wang Yu <wangyuict@xxxxxxxxx> wrote:
>
>
> On Sun, Nov 23, 2008 at 2:23 AM, Rik van Riel <riel@xxxxxxxxxxx> wrote:
>>
>> Peter Teoh wrote:
>>>
>>> when a process mmap() a section of a file into its own process memory,
>>> the process memory will maintain a copy of the data of that section of
>>> the file.
>>
>> No, it does not maintain a copy.
>>
>> It mmaps the page cache pages into its own address space.
>
>
>    According to your explanation, the flow is physical file(on disk)-->Page
> Cache(on memory, but in kernel space)-->Process Memory(on  memory, but in
> user space). Is it? I am not sure....
>>

Yes. When kernel find no page mapping, it allocate new page in page
cache and copy from on-disk page to new page, then map the new page to
user space address.
so, Never duplication.

>>> so...does there exists duplicated buffering?   (one in kernel -
>>> pagecache, and one in userspace - for mmap() content of the file in
>>> process memory)
>>
>> No, there is no such double buffering.
>
>    But what is the difference? Why linux do it?

In case of read system call except O_DIRECT, It's duplication between
user buffer and page cache.

Read/write system call abstract page to file. so you always need user buffer.
Let think. If you want read some data, First of all you need some
space which is user buffer.
Mmap system call abstract page to memory.  so you can handle file as
memory operation without user buffer that mean It don't have
duplication overhead.

>>
>>
>> --
>> All rights reversed.
>>
>> --
>> To unsubscribe from this list: send an email with
>> "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
>> Please read the FAQ at http://kernelnewbies.org/FAQ
>>
>
>
>
> --
> National Research Center for Intelligent Computing Systems
> Institute of Computing Technology, Chinese Academy of Sciences
>



-- 
Kinds regards,
MinChan Kim

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux