进行写操作可能是文件系统块大小的倍数,因此可能会有一些优势,尤其是在就地更新文件的情况下。如果向文件中写入的块少于部分块,则操作系统必须读取旧块,合并新内容,然后将其写出。如果您快速按顺序快速写入小片段,则不一定会发生这种情况,因为更新将在内存中的缓冲区中完成,随后将刷新这些缓冲区。但是,如果您每次执行写操作都没有填充一个块(以及一个正确对齐的块:块大小的倍数,偏移量是块大小的倍数),有时您可能会触发一些低效率的操作。
传输大小的问题并不一定会随着mmap消失。如果先映射文件,然后再将
memcpy一些数据映射到地图中,则将使页面变脏。该页面必须在以后的某个时间刷新:它的时间不确定。如果您制作另一个
memcpy触摸同一页面的页面,则该页面现在可能已经干净了,并且您又使它变脏了。因此它被写入两次。与页面对齐的副本(页面大小的倍数)将是解决方法。



