在POSIX unix系统中,是否可以以一种方式mmap()文件,使其永远不会被换出到磁盘而支持其他文件?

sma*_*cke 2 c unix search mmap

如果没有使用mmap(),似乎应该有一种方法可以给某些文件"优先级",这样它们被换出的唯一时间就是试图引入的页面错误,例如,执行代码或内存是malloc()'d'通过一些过程,但从来没有其他文件.人们可以想到这可能有用的情况.考虑搜索引擎,它应该将其索引文件保存在缓存中,但可以同时写入新文件(不用于搜索).

Die*_*Epp 6

有几种方法.

最好的方法是madvise(),它允许您通知内核很快就需要特定范围的内存,这使它优先于其他内存.您也可以使用它来表示不会很快需要特定范围,因此应该尽快换出它.

黑客方式是mlock(),它强制一系列内存留在RAM中.这通常不是一个好主意,只应在特殊情况下使用.最常见的情况是将密码存储在RAM中,以便在关闭计算机电源后无法从交换文件中恢复密码.我不会mlock()用于性能调整,除非我已经用尽其他选项.

最糟糕的方式是不断戳记忆,迫使它保持新鲜感.

  • 删除了我的答案.这个更好. (2认同)