使用mmap编写文件

时间:2014-05-11 23:22:34

标签: c linux paging mmap

我正在创建一个使用O_CREAT打开的文件然后使用ftruncate我设置了文件的大小。现在我使用MAP_SHARED mmap该文件并开始编写该文件。我想了解文件是如何写回磁盘的。

非常具体我的问题是:这是否为零拷贝,即缓冲区缓存中的页面将直接映射到进程地址空间,在这种情况下,页面守护进程会将页面刷新回磁盘调度。如果没有,那么页面缓存中将有一个页面,缓冲区缓存中会有另一个页面。如果这是多少粒度将数据从页面缓存中的页面复制到缓冲区缓存中的页面?

如果您希望提供更多的见解,那将非常受欢迎: - )

1 个答案:

答案 0 :(得分:2)

由于Linux具有统一的缓冲区缓存,因此这是零复制。大多数现代操作系统现在都有统一的缓冲区缓存。