gpt4 book ai didi

调用msync有必要吗?

转载 作者:行者123 更新时间:2023-11-30 14:54:21 28 4
gpt4 key购买 nike

阅读了一些文章和帖子后: https://lwn.net/Articles/502612/ mmap, msync(MS_ASYNC) and munmap

我有点困惑:
1. msync 是否真的做了什么(上面的第二个链接包含联机帮助页的一部分,表明它在较新的内核中没有;不过,第一个链接说它确实做了一些事情)
2. 如果进程可能被杀死或崩溃(但不是操作系统),是否需要调用 msync。
3.内核多久将映射内存刷新回“磁盘”?

假设我使用内核 3.10 和 2.6.32。

谢谢。

最佳答案

我们需要小心 - 你的问题标题是“调用 msync 有必要吗?“但是 msync() 接受的参数使答案变得复杂:

  1. 在 Linux 上,msync(MS_ASYNC) 是一个空操作。在其他操作系统上,它可能会执行某些操作,当然您可以使用其他参数调用 msync()
  2. 如果您需要知道同步是否已完成并且您愿意阻止直到同步完成,则可以使用 msync(MS_SYNC) (请注意缺少 A)。如果just your program crashes the Linux kernel will continue to track dirty filesystem pages .
  3. 这将取决于您的文件系统和虚拟机设置。请参阅 https://www.kernel.org/doc/Documentation/sysctl/vm.txt 中的 dirty_* 设置。 .

这个问题类似于having linux persist memory changes to disk - 如果您需要知道数据何时位于稳定介质上,则必须使用阻塞调用(这将触发立即写回)。 Linux 上没有“请开始在后台同步”调用。

关于调用msync有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46826989/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com