Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我使用mmap将文件 F 映射到块 B,然后只写入 B 的一个字节。如果我使用 MS_SYNC 为 B 调用 msync(),操作系统是否将所有块写入 F?还是只将修改后的一个字节写入F?
mmap
这是特定于操作系统和体系结构的,但很可能只有脏页会被写入磁盘。
您的特定系统上的手册页是怎么说的?如果它不是开源的,那就是最好的选择,除非您可以找到适用于您的 UNIX 平台的更详细的文档。
在至少一个系统上, man msync 说:
msync() 系统调用将修改后的整个页面写回文件系统并更新文件修改时间。只有那些包含 addr 和 len-1 后续位置的页面才会被检查。