- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
阅读了一些文章和帖子后: https://lwn.net/Articles/502612/ mmap, msync(MS_ASYNC) and munmap
我有点困惑:
1. msync 是否真的做了什么(上面的第二个链接包含联机帮助页的一部分,表明它在较新的内核中没有;不过,第一个链接说它确实做了一些事情)
2. 如果进程可能被杀死或崩溃(但不是操作系统),是否需要调用 msync。
3.内核多久将映射内存刷新回“磁盘”?
假设我使用内核 3.10 和 2.6.32。
谢谢。
最佳答案
我们需要小心 - 你的问题标题是“调用 msync 有必要吗?“但是 msync()
接受的参数使答案变得复杂:
msync(MS_ASYNC)
是一个空操作。在其他操作系统上,它可能会执行某些操作,当然您可以使用其他参数调用 msync()
。msync(MS_SYNC)
(请注意缺少 A)。如果just your program crashes the Linux kernel will continue to track dirty filesystem pages .dirty_*
设置。 .这个问题类似于having linux persist memory changes to disk - 如果您需要知道数据何时位于稳定介质上,则必须使用阻塞调用(这将触发立即写回)。 Linux 上没有“请开始在后台同步”调用。
关于调用msync有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46826989/
我想使用 POSIX 共享内存,我的问题是关于调用 mmap(MAP_SHARED)msync() 和 munmap() 的用法. 在不使用 msync() 的情况下,对一个进程的共享内存段所做的更改
我刚刚学习 msync 的使用,但是我遇到了问题段错误。当我将 MAPSTEP 更改为较小的数字时,错误就消失了。这段代码有什么问题? #define MAPSTEP 1 * 4096 main(vo
当使用mmap/msync/munmap时,读/写是原子的吗? (假设磁盘将在断电时完成所有挂起的写入) 最佳答案 涉及多个页面或多个磁盘扇区的操作从来都不是精确的原子操作。 调查两个特定事物之间的一
我正在编写一个简单的 C 程序来反转文件中的字节(仅用于学习目的)。我正在打开我的文件,将其映射到内存中并反转字节顺序。所以第一个变成最后一个,最后一个变成第一个等等。 在内存中一切正常(用 gdb
我在 Linux 中使用 POSIX 函数 mmap()。但是当我执行 msync() 时,它会将缓存缓冲区完全写入文件,还是会以某种方式在某处记录哪些页面已更改,哪些页面未更改,并且写入文件仅更改
我正在对映射文件进行许多小的随机写入。我想确保一致性,因此有时会使用 msync,但我不想跟踪我所做的每一个小写入。在当前的 Linux 内核实现中,对整个文件使用 msync 是否会造成性能损失?例
Windows 中的 msync [unix sys call] 等价物是什么?我正在寻找 C、C++ 空间中的 MSDN api。有关 msync 的更多信息,请访问 http://opengrou
已阅读 manual msync的,我认为MS_INVALIDATE的确切含义如下: 假设有p1、p2、p3三个进程。 p1 和 p2 都使用 mmap 和 MAP_SHARED 同时读写文件 /tm
已阅读 manual msync的,我认为MS_INVALIDATE的确切含义如下: 假设有p1、p2、p3三个进程。 p1 和 p2 都使用 mmap 和 MAP_SHARED 同时读写文件 /tm
我在使用msync时遇到一个问题。非常感谢您的帮助! 简而言之,我映射文件A,并修改它和msync,但st_mtime没有改变。即使munmap文件A并退出进程,st_mtime也不变。 以下是代码。
我有两个上下文,即 process1 和 process2 共享相同的映射区域,process1 大多数时候将数据同步到文件,而 process2 只在系统重新启动之前同步一次以确保所有数据都已同步。
是否保证在 linux 上使用 msync(MS_ASYNC) 刷新页面的顺序与写入页面的顺序相同? 如果视情况而定,我(完全服务器访问权限)是否有办法确保它们的顺序相同? 背景 我目前正在使用 Op
如果我在内存映射区域上使用 MS_ASYNC 调用 msync,同步过程将被异步处理。 但是,如果我立即对该区域调用 munmap,我是否可以假设 msync 将安全执行?或者我必须在 munmap
我在 Linux 2.6 上的应用程序中使用 msync 以确保在发生崩溃时的一致性。我需要彻底测试我对 msync 的使用,但实现似乎正在为我刷新所有相关页面。有没有一种方法可以防止将 mmap 页
我想使用 mmap 在 Linux 下运行的 C 程序中实现程序状态某些部分的持久化,方法是使用带有 MAP_SHARED 标志集的 mmap() 将固定大小的结构与众所周知的文件名相关联。出于性能原
据我所知,在大多数日志模式为“data=ordered”的ext3系统上,fsync不仅会同步fd指定的文件,还会同步文件系统上的所有文件,而且这个问题还没有被修复内核 2.6.30 之前 我有一个问
我正在使用 mmap 打开/dev/mem 以读/写 UART 寄存器。它运作良好,但我的问题是:写入后,是否真的需要带有 MS_SYNcflags的 msync 系统调用? 根据我的理解,/dev/
下午好,我们正在为 Centos Linux Release x86_32 和 Microsoft Windows 构建原型(prototype)去重器。原型(prototype)的一部分是使用 18
我通过 C API 使用 RocksDB。 我有一个测试程序,它打开数据库,执行 1,000 次写入(收集启动写入和回调之间的计时数据),执行 1,000 次读取,然后关闭。 这有效。平均写入时间约为
我是一名优秀的程序员,十分优秀!