如果不使用 mmap()
,似乎应该有一种方法可以给某些文件“优先级”,这样它们唯一被换出的时间就是页面错误试图带来在,例如,执行代码,或被某些进程malloc()
调用的内存,而不是其他文件。人们可以想到这可能有用的情况。考虑搜索引擎,它应该将索引文件保存在缓存中,但可能同时写入新文件(不用于搜索)。
最佳答案
有几种方法。
最好的方法是使用 madvise()
,它允许您通知内核您很快将需要一个特定范围的内存,从而使其优先于其他内存。你也可以用它来表示某个特定范围很快就不需要了,所以应该尽快换掉它。
hack 方法是使用 mlock()
,它强制将一定范围的内存保留在 RAM 中。这通常不是一个好主意,只应在特殊情况下使用。最常见的情况是将密码存储在 RAM 中,以便在计算机断电后无法从交换文件中恢复密码。除非我用尽了其他选项,否则我不会使用 mlock()
进行性能调整。
最糟糕的方法是不断戳记,强制它保持新鲜。
关于c - 在 POSIX unix 系统中,是否可以以永远不会换出磁盘以支持其他文件的方式对文件进行 mmap()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23708274/