C 使用mmap写入文件

C 使用mmap写入文件,c,linux,paging,mmap,C,Linux,Paging,Mmap,我使用O_create创建一个打开的文件,然后使用ftruncate设置文件的大小。现在我用MAP_SHARED映射文件并开始编写文件。我想了解文件是如何写回磁盘的 非常具体地说,我的问题是:这是否将是零拷贝,即缓冲区缓存中的页面将直接映射到进程地址空间,在这种情况下,页面守护进程将在调度页面时将页面刷新回磁盘。如果没有,那么页面缓存中将有一个页面,而缓冲区缓存中将有另一个页面。如果是这种情况,数据将以何种粒度从页面缓存中的页面复制到页面缓存中的页面 如果您希望提供更多的见解,那将非常受欢迎:-

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

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


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

因为Linux有一个统一的缓冲区缓存,是的,这是零拷贝。现在大多数现代操作系统都有统一的缓冲缓存