Linux:为进程禁用文件caching?

有没有办法来禁用特定进程的文件caching

我有两个进程运行A和B.

我想由A打开的文件保留在caching中。

而且我不想为B启用文件caching,所以它不会replace内存中进程caching的文件。

有没有办法来禁用特定进程的文件caching?

没有我知道的…唯一的选择是全球/设备特定的:

  • 在mount上使用-sync选项
  • 使用drop_caches

还有一点:

即使如果你可以做你所要求的,也不能保证任何其他进程(C,D,E等)以“内存中的进程A所缓存的文件”被取代的方式行事。

更新 – 从OP的评论表现来看:

Linux提供了一种称为“内存映射文件”的东西(就像大多数现代操作系统一样) – 基本上这是一种访问内存中文件内容的方式…操作系统将文件(取决于给定的参数)分配给地址空间并将该文件的内容加载到该地址空间(同样:确切的行为取决于给定的参数)。

你会在流程A中做到这一点,以达到你想要的…

详细了解mmap API调用 。

进程B可以使用fadvise()指示内核不缓存从给定文件描述符读取的数据。